Назад | Перейти на главную страницу

Как получить байты TX / RX без ifconfig?

поскольку ifconfig очевидно устарел в основных дистрибутивах Linux, я подумал, что узнаю что-нибудь о ip инструмент, который предполагается использовать вместо ifconfig.

И тут столкнулся с проблемой: при самостоятельном запуске ifconfig показывает количество байтов, полученных / переданных на каждом интерфейсе, помимо другой информации. Я не мог найти способ получить это от ip. В этом инструменте нет такой функции? Какие еще встроенные инструменты я могу использовать для получения этой статистики?

В ip Команда, которая является частью пакета iproute2, является новым инструментом. В link подкоманда предназначена для управления устройствами / интерфейсами.

Если вы можете получить статистику интерфейса, используя 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

Другой вариант - использовать файловую систему / proc. В / proc / net / dev файл содержит статистику о настроенных сетевых интерфейсах. Каждая строка предназначена для одного сетевого интерфейса и содержит статистику приема и передачи. Статистика включает такие показатели, как общее количество полученных / переданных байтов, пакетов, отбрасываний, ошибок и так далее.

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

Или вы можете попробовать netstat команда, которая может отображать все сетевые интерфейсы и соответствующую статистику:

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

# 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

Также вы можете использовать iptables и анализировать вывод.

За полученные пакеты

# iptables -L INPUT -n -v

для передаваемых пакетов

# iptables -L OUTPUT -n -v 

Если сервер является шлюзом, вам также следует проанализировать ВПЕРЕД цепь

Вы можете прочитать файл /sys/class/net/wlp3s0/statistics/rx_bytes и получить rx_byes напрямую, не вызывая другую команду, vnstat тоже хорошо. Насколько я знаю, Linux хранит всю информацию в файлах, поэтому лучше найти эти файлы и получить информацию. Найти нужный файл - непростая задача.