Jak zdobyć bajty TX / RX bez ifconfig?

61

Ponieważ ifconfignajwyraźniej jest przestarzały w dużych dystrybucjach Linuksa, pomyślałem, że dowiem się czegoś o ipnarzędziu, którego należy użyć zamiast ifconfig.

I tutaj napotkałem problem: po uruchomieniu samodzielnie ifconfigpokazuje liczbę bajtów odebranych / przesłanych na każdym interfejsie oprócz innych informacji. Nie mogłem znaleźć sposobu, aby to uzyskać ip. Czy w tym narzędziu nie ma takiej funkcji? Jakich innych wbudowanych narzędzi można użyć do uzyskania tych statystyk?

justinas
źródło
Możesz także sprawdzić netstat. linux.die.net/man/8/netstat
SunSparc

Odpowiedzi:

53

Inną opcją jest użycie systemu plików / proc. Plik / proc / net / dev zawiera statystyki dotyczące skonfigurowanych interfejsów sieciowych. Każda linia jest przeznaczona dla jednego interfejsu sieciowego i zawiera statystyki dotyczące odbierania i przesyłania. Statystyki obejmują miary, takie jak całkowita liczba odebranych / przesłanych bajtów, pakietów, upuszczeń, błędów i tak dalej.

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

Możesz też wypróbować polecenie netstat, które wyświetla wszystkie interfejsy sieciowe i powiązane statystyki:

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
źródło
/proc/net/devma najczystszy format ze wszystkich rozwiązań IMO, akceptując.
justinas,
Statystyki pokazane przez cat /proc/net/devto, jak długo?
lalebarde
Jak uzyskać tx / rx /proc/net/dev?
Piotr Kula,
1
Spróbuj parsować pola wyjściowe 3. i 11., coś w stylu awk '/: / {print (1 $, 3 $, 11 $)}' </ proc / net / dev
dsmsk80
54

ipKomenda, która jest częścią pakietu, iproute2 jest nowym narzędziem. linkKomenda służy do zarządzania urządzeniami / interfejsów.

Jeśli możesz uzyskać statystyki interfejsu za pomocą 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
źródło
6
Chociaż procodpowiedź jest czysta i lekka, odpowiedź ta jest prawdopodobnie najbliższa „wymianie” ifconfignarzędzia, ponieważ została wyraźnie zaprojektowana z myślą o zamianie ifconfig.
Moshe Katz,
2
ip -s link show dev eth0wyświetlać tylko ruch na eth0
pim
4
Aby uzyskać to w postaci czytelnej dla człowieka (raportowanie w MB / GB / TB zamiast bajtach), użyj -hflagi. Na przykład ip -h -s link.
Joseph Redfern,
46

Możesz uzyskać wszystkie niezbędne informacje za pośrednictwem 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

Możesz także użyć iptables i parsować dane wyjściowe.

Dla odebranych pakietów

# iptables -L INPUT -n -v

dla przesyłanych pakietów

# iptables -L OUTPUT -n -v 

Jeśli serwer jest bramą, powinieneś również przeanalizować łańcuch FORWARD

ALex_hha
źródło
2

Możesz odczytać plik /sys/class/net/wlp3s0/statistics/rx_bytesi uzyskać bezpośrednio rx_byes bez wywoływania innego polecenia, vnstatjest również dobry. Linux przechowuje wszystkie informacje w plikach, jak wiem, więc lepiej znaleźć te pliki i uzyskać informacje. Znalezienie odpowiedniego pliku jest wyzwaniem.

Dinuka Salwathura
źródło
2
Witamy w społeczności! Dobra robota, to prawda, ale pamiętaj, że niektóre stare jądra nie zapewniają tych plików. Życzę powodzenia i sukcesów! ;)
FarazX,