поскольку 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 хранит всю информацию в файлах, поэтому лучше найти эти файлы и получить информацию. Найти нужный файл - непростая задача.