¿Cómo obtener bytes TX / RX sin ifconfig?

62

Como ifconfigaparentemente está en desuso en las principales distribuciones de Linux, pensé que aprendería algo sobre la ipherramienta que se supone que debe usarse en lugar de ifconfig.

Y aquí me encontré con un problema: cuando se ejecuta solo, ifconfigmuestra la cantidad de bytes recibidos / transmitidos en cada interfaz además de otra información. No pude encontrar una manera de obtener esto ip. ¿No hay tal función en esta herramienta? ¿Qué otras herramientas integradas podría usar para obtener esas estadísticas?

justinas
fuente
También puedes consultar netstat. linux.die.net/man/8/netstat
SunSparc

Respuestas:

53

Otra opción es usar el sistema de archivos / proc. El archivo / proc / net / dev contiene estadísticas sobre las interfaces de red configuradas. Cada línea está dedicada a una interfaz de red y contiene estadísticas para recibir y transmitir. Las estadísticas incluyen métricas como el número total de bytes recibidos / transmitidos, paquetes, caídas, errores, etc.

cat /proc/net/dev

    Inter-|   Receive                                                |  Transmit
     face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed

    lo:    29846937   129576     0    0    0     0          0       0 29846937   129576     0    0    0     0       0          0
 wlan0:    9467393340 8027251    0    0    0     0          0       0 2559312961 5896509    0    0    0     0       0          0

O puede probar el comando netstat que puede mostrar todas las interfaces de red y estadísticas relacionadas:

netstat -i

Iface   MTU Met    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
lo         65536   0   130435      0      0      0   130435      0      0      0 LRU
wlan0       1492   0  8028018      0      0      0  5897361      0      0      0 BMRU
dsmsk80
fuente
/proc/net/devtiene el formato más limpio de todas las soluciones IMO, aceptando.
justinas
Las estadísticas mostradas por cat /proc/net/devson por cuánto tiempo?
lalebarde
¿Cómo se obtiene tx / rx /proc/net/dev?
Piotr Kula
1
Intente analizar el campo 3. y 11. de la salida, algo así como awk '/: / {print ($ 1, $ 3, $ 11)}' </ proc / net / dev
dsmsk80
55

El ipcomando que forma parte del paquete iproute2 es la nueva herramienta. El linksubcomando es para administrar los dispositivos / interfaces.

Si puede obtener las estadísticas de una interfaz usando ip -s link

root:~# ip -s link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    RX: bytes  packets  errors  dropped overrun mcast
    50679705   529967   0       0       0       0
    TX: bytes  packets  errors  dropped carrier collsns
    50679705   529967   0       0       0       0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:1d:7d:aa:e3:4e brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast
    187663757  308710386 0       0       0       0
    TX: bytes  packets  errors  dropped carrier collsns
    4051284587 532435117 0       0       0       0
Zoredache
fuente
66
Si bien la procrespuesta es limpia y ligera, esta respuesta es probablemente la más cercana a un "reemplazo" de la ifconfigherramienta porque se diseñó explícitamente teniendo ifconfigen cuenta el reemplazo .
Moshe Katz
2
ip -s link show dev eth0para mostrar solo el tráfico en eth0
pim
44
Para obtener esto en forma legible para humanos (informes en mb / gb / tb en lugar de bytes), use la -hbandera. Por ejemplo, ip -h -s link.
Joseph Redfern
46

Puede obtener toda la información necesaria a través de proc

# cat /sys/class/net/eth0/statistics/rx_bytes
# cat /sys/class/net/eth0/statistics/rx_packets

# cat /sys/class/net/eth0/statistics/tx_packets
# cat /sys/class/net/eth0/statistics/tx_bytes

También puede usar iptables y analizar la salida.

Para paquetes recibidos

# iptables -L INPUT -n -v

para paquetes transmitidos

# iptables -L OUTPUT -n -v 

Si el servidor es una puerta de enlace, también debe analizar la cadena FORWARD

ALex_hha
fuente
2

Puede leer el archivo /sys/class/net/wlp3s0/statistics/rx_bytesy obtener los rx_byes directamente sin llamar a otro comando, vnstattambién es bueno. Linux almacena toda la información en archivos como lo sé, por lo que es mejor encontrar esos archivos y obtener información. Encontrar el archivo relevante es el desafío.

Dinuka Salwathura
fuente
2
¡Bienvenido a la comunidad! Bien hecho, eso es correcto, pero tenga en cuenta que algunos núcleos antiguos no proporcionan estos archivos. ¡Te deseo suerte y éxito! ;)
FarazX