Como obter bytes TX / RX sem o ifconfig?

53

Como ifconfig aparentemente está sendo reprovado nas principais distribuições do Linux, pensei em aprender algo sobre a ferramenta ip que deveria ser usada em vez de ifconfig .

E aqui me deparei com um problema: quando executado por conta própria, ifconfig mostra o número de bytes recebidos / transmitidos em cada interface, além de outras informações. Não consegui encontrar uma maneira de obter isso de ip . Não existe tal função nesta ferramenta? Que outras ferramentas internas eu poderia usar para obter essas estatísticas?

    
por justinas 24.08.2013 / 21:28

4 respostas

42

Outra opção é usar o sistema de arquivos / proc. O arquivo / proc / net / dev contém estatísticas sobre as interfaces de rede configuradas. Cada linha é dedicada a uma interface de rede e contém estatísticas para receber e transmitir. As estatísticas incluem métricas como o número total de bytes recebidos / transmitidos, pacotes, quedas, erros e assim por diante.

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

Ou você pode tentar o comando netstat , que pode exibir todas as interfaces de rede e estatí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
    
por 24.08.2013 / 22:57
46

O comando ip , que faz parte do pacote iproute2, é a nova ferramenta. O subcomando link é para gerenciar os dispositivos / interfaces.

Se você puder obter as estatísticas de uma interface 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
    
por 24.08.2013 / 23:00
42

Você pode obter todas as informações necessárias via 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

Você também pode usar o iptables e analisar a saída.

Para pacotes recebidos

# iptables -L INPUT -n -v

para pacotes transmitidos

# iptables -L OUTPUT -n -v 

Se o servidor for um gateway, você também deverá analisar FORWARD cadeia

    
por 24.08.2013 / 22:11
2

Você pode ler o arquivo /sys/class/net/wlp3s0/statistics/rx_bytes e obter os rx_byes diretamente sem chamar outro comando, vnstat também é bom. O Linux armazena todas as informações em arquivos que eu conheço, então é melhor encontrar esses arquivos e obter informações. Encontrar o arquivo relevante é o desafio.

    
por 25.03.2017 / 18:06