web-dev-qa-db-fra.com

Comment obtenir des octets TX / RX sans ifconfig?

Étant donné que ifconfig est apparemment obsolète dans les principales distributions Linux, j'ai pensé apprendre quelque chose sur l'outil ip qui est censé être utilisé à la place de ifconfig.

Et là, j'ai rencontré un problème: lorsqu'il est exécuté seul, ifconfig affiche le nombre d'octets reçus/transmis sur chaque interface en plus des autres informations. Je n'ai pas pu trouver un moyen d'obtenir cela à partir de ip. N'y a-t-il pas une telle fonction dans cet outil? Quels autres outils intégrés puis-je utiliser pour obtenir ces statistiques?

66
justinas

Une autre option consiste à utiliser le système de fichiers/proc. Le fichier / proc/net/dev contient des statistiques sur les interfaces réseau configurées. Chaque ligne est dédiée à une interface réseau et contient des statistiques de réception et de transmission. Les statistiques comprennent des mesures telles que le nombre total d'octets reçus/transmis, de paquets, de suppressions, d'erreurs, etc.

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 vous pouvez essayer la commande netstat qui peut afficher toutes les interfaces réseau et les statistiques associées:

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
56
dsmsk80

La commande ip qui fait partie du package iproute2 est le nouvel outil. La sous-commande link sert à gérer les périphériques/interfaces.

Si vous pouvez obtenir les statistiques d'une interface en utilisant 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
57
Zoredache

Vous pouvez obtenir toutes les informations nécessaires 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

Vous pouvez également utiliser iptables et analyser la sortie.

Pour les paquets reçus

# iptables -L INPUT -n -v

pour les paquets transmis

# iptables -L OUTPUT -n -v 

Si le serveur est une passerelle, vous devez également analyser FORWARD chain

48
ALex_hha

Vous pouvez lire le fichier /sys/class/net/wlp3s0/statistics/rx_bytes et obtenir les rx_byes directement sans appeler une autre commande, vnstat est également bon. Linux stocke toutes les informations dans des fichiers comme je le sais, il vaut donc mieux trouver ces fichiers et obtenir des informations. Trouver le fichier pertinent est le défi.

2
Dinuka Salwathura