2009-07-13 4 views
2

Je suis à la recherche d'un moyen de programmer (que ce soit en appelant une bibliothèque, ou un programme autonome) surveiller le trafic IP en direct sous linux. Je ne veux pas de totaux, je veux la bande passante actuelle qui est utilisée. Je suis à la recherche d'un outil similaire (mais non graphique) au moniteur de trafic réseau du menu istat d'OS X. Je suis à peu près certain que quelque chose comme ça existe, mais je ne suis pas sûr de savoir où chercher, et je préfère ne pas avoir à réinventer la roue.Taux RX et TX en direct dans Linux

Est-ce aussi simple que de surveiller un socket? Ou ai-je besoin d'un utilitaire qui gère beaucoup de frais généraux pour moi?

Répondre

9

Nous avons octets et de paquets dans/proc/net/dev, donc:

import time 

last={} 

def diff(col): return counters[col] - last[iface][col] 

while True: 
    print "\n%10s: %10s %10s %10s %10s"%("interface","bytes recv","bytes sent", "pkts recv", "pkts sent") 
    for line in open('/proc/net/dev').readlines()[2:]: 
    iface, counters = line.split(':') 
    counters = map(int,counters.split()) 
    if iface in last: 
     print "%10s: %10d %10d %10d %10d"%(iface,diff(0), diff(8), diff(1), diff(9)) 

    last[iface] = counters 

    time.sleep(1) 
+3

Et sur un noyau 2.6, il y a des statistiques plus détaillées par périphérique dans '/ sys/class/net/$ dev/statistics' – ephemient

+0

parfait! Merci beaucoup – helloandre

1

-je utiliser un petit programme connu sous le nom dstat Il combine beaucoup « stat » comme des fonctions en 1 sortie rapide. Très personnalisable Il vous donnera le débit réseau actuel ainsi que beaucoup plus.

Dans Linux le programme netstat vous donnera des statistiques réseau brutes. Vous pouvez analyser ces statistiques vous-même pour produire des résultats significatifs (ce que dstat fait).

0

Vous pouvez obtenir le débit du réseau et le paquet compte en utilisant la commande dstat suivante:

dstat -n --net-packets -f 10 

Ou si vous souhaitez surveiller les interfaces spécifiques, vous pouvez faire:

dstat -n --net-packets -N eth0,wlan0 10 

Si vous préférez plus conventionnel sortie bits per second:

dstat -n --net-packets -N eth0,wlan0 --bits 10 

Cela vous fournira des moyennes de 10 secondes. Si vous préférez écrire ceci pour le post-traitement, vous pouvez exporter vers un fichier CSV à l'aide:

dstat -n --net-packets -N eth0,wlan0 --bits 10 

navires dstat avec plug-ins de lot pour établir une corrélation entre ces mesures à d'autres paramètres de votre système, et il vous donne la flexibilité pour ajouter vos propres plugins (python) si vous avez besoin de personnaliser des données ou de surveiller quelque chose de spécifique à votre environnement.

Questions connexes