Como obter bytes TX / RX sem ifconfig?

62

Como ifconfigaparentemente está sendo preterido nas principais distribuições Linux, pensei em aprender algo sobre a ipferramenta que deveria ser usada em vez de ifconfig.

E aqui encontrei um problema: quando executado por conta própria, ifconfigmostra 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 ip. Não existe essa função nesta ferramenta? Que outras ferramentas internas eu poderia usar para obter essas estatísticas?

justinas
fonte
Você também pode conferir netstat. linux.die.net/man/8/netstat
SunSparc

Respostas:

53

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 recebimento e transmissão. As estatísticas incluem métricas como o número total de bytes recebidos / transmitidos, pacotes, descargas, 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
dsmsk80
fonte
/proc/net/devpossui o formato mais limpo de todas as soluções aceitas pela IMO.
Just just
As estatísticas mostradas por cat /proc/net/devsão por quanto tempo?
Lalebarde 18/07
Como você obtém tx / rx /proc/net/dev?
Piotr Kula
11
Tente analisar 3. e 11. campo da saída, algo como awk '/: / {print ($ 1, $ 3, US $ 11)}' </ proc / net / dev
dsmsk80
55

O ipcomando que faz parte do pacote iproute2 é a nova ferramenta. O linksubcomando é para gerenciar os dispositivos / interfaces.

Se você pode 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
Zoredache
fonte
6
Embora a procresposta seja limpa e leve, essa resposta provavelmente é a mais próxima de um "substituto" para a ifconfigferramenta porque foi explicitamente projetada com a substituição ifconfigem mente.
Moshe Katz
2
ip -s link show dev eth0mostrar apenas o tráfego em eth0
pim
4
Para obter isso na forma legível por humanos (reportando em mb / gb / tb em vez de bytes), use o -hsinalizador Por exemplo ip -h -s link,.
Joseph Redfern
46

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

Além disso, você 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 a cadeia FORWARD

ALex_hha
fonte
2

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

Dinuka Salwathura
fonte
2
Bem-vindo à comunidade! Bem feito, está correto, mas observe que alguns kernels antigos não fornecem esses arquivos. Desejo-lhe sorte e sucesso! ;)
FarazX