Come ottenere byte TX / RX senza ifconfig?


62

Dato che ifconfigapparentemente è stato deprecato nelle principali distribuzioni Linux, ho pensato di imparare qualcosa sullo ipstrumento che dovrebbe essere usato al posto di ifconfig.

E qui ho ifconfigriscontrato un problema: quando eseguito da solo, mostra il numero di byte ricevuti / trasmessi su ciascuna interfaccia oltre ad altre informazioni. Non sono riuscito a trovare un modo per ottenerlo ip. Non esiste una tale funzione in questo strumento? Quali altri strumenti integrati potrei usare per ottenere quelle statistiche?


Puoi anche dare un'occhiata netstat. linux.die.net/man/8/netstat
SunSparc

Risposte:


53

Un'altra opzione è usare il filesystem / proc. Il file / proc / net / dev contiene statistiche sulle interfacce di rete configurate. Ogni linea è dedicata a un'interfaccia di rete e contiene statistiche per la ricezione e la trasmissione. Le statistiche includono metriche quali il numero totale di byte ricevuti / trasmessi, pacchetti, drop, errori e così via.

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

Oppure puoi provare il comando netstat che può visualizzare tutte le interfacce di rete e le relative statistiche:

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

/proc/net/devha il formato più pulito di tutte le soluzioni IMO, accettando.
Justinas,

Le statistiche mostrate da cat /proc/net/devsono per quanto tempo?
lalebarde,

Come si ottiene tx / rx da /proc/net/dev?
Piotr Kula,

1
Prova ad analizzare il campo 3. e 11. dell'output, qualcosa come awk '/: / {print ($ 1, $ 3, $ 11)}' </ proc / net / dev
dsmsk80

55

Il ipcomando che fa parte del pacchetto iproute2 è il nuovo strumento. Il linksottocomando è per la gestione dei dispositivi / interfacce.

Se riesci a ottenere le statistiche di un'interfaccia 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

6
Mentre la procrisposta è pulita e leggera, questa risposta è probabilmente la più vicina a una "sostituzione" per lo ifconfigstrumento perché è stata esplicitamente progettata ifconfigpensando alla sostituzione .
Moshe Katz,

2
ip -s link show dev eth0per mostrare solo il traffico su eth0
pim

4
Per ottenere questo in forma leggibile dall'uomo (riportando in mb / gb / tb anziché in byte), usa il -hflag. Per esempio, ip -h -s link.
Joseph Redfern,

46

Puoi ottenere tutte le informazioni necessarie tramite 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

Inoltre è possibile utilizzare iptables e analizzare l'output.

Per i pacchetti ricevuti

# iptables -L INPUT -n -v

per pacchetti trasmessi

# iptables -L OUTPUT -n -v 

Se il server è un gateway, è necessario analizzare anche la catena FORWARD


2

Puoi leggere il file /sys/class/net/wlp3s0/statistics/rx_bytese ottenere rx_byes direttamente senza chiamare un altro comando, vnstatè anche buono. Linux memorizza tutte le informazioni in file che conosco, quindi è meglio trovare quei file e ottenere informazioni. Trovare il file pertinente è la sfida.


2
Benvenuto nella community! Ben fatto, è corretto, ma nota che alcuni vecchi kernel non forniscono questi file. Ti auguro buona fortuna e successo! ;)
FarazX
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.