Prog pour compter le trafic qui passe sur une interface reseau - Linux et OS Alternatifs
Marsh Posté le 04-10-2001 à 21:16:57
tu peux le voir avec ifconfig :  
 
| Code : 
 | 
Marsh Posté le 04-10-2001 à 22:42:24
ouais mais j'aimerais qu'il l'enregistre qqpart 
 
Enfait en gros c pour voir le debit que je fais sur mon adsl sur un mois 
Marsh Posté le 04-10-2001 à 22:56:04
en php tu sais recup ca sans pb  
 
en d'autre languiage aussi surement mais bon  
 
Marsh Posté le 04-10-2001 à 23:39:08
| Code : 
 | 
 
  
 
Je fout les valeurs dans $1 (recus) et $2 (émis)... 
 
ifconfig eth0 | grep "RX bytes" | rxtx.pl 
Si tu aimes le perl tu peux jouer avec après... 
PS1 : C'est du vite fait, c pour ca que j'utilise grep  
 
J'aurais pu le faire avec sed et gawk (voire même gawk tout seul, mais perl roulaize  , et puis y'a pas mieux que le perl pour coder rapide)
, et puis y'a pas mieux que le perl pour coder rapide) 
PS2 : la regexp est pas belle, mais comme ca, ca devrais marches même avec une Mandrake  
 
Marsh Posté le 04-10-2001 à 23:46:45
y'a aussi la version super porc (ma préférée) : 
| Code : 
 | 
 
... ca tiens sur une ligne, on peut le foutre dans un 'perl -e' pour être évalué sur la ligne de cmd sans créer le programme.... Mais créé quand même le fichier, sinon tu pourras pas traiter $1 et $2 à ta convenance après  
 
Marsh Posté le 05-10-2001 à 02:18:53
k,etload, mais je ne suis pas sûr
Marsh Posté le 05-10-2001 à 05:28:40
si t'as mrtg installé , avec snmp , ya un pti script php  MRTG Total Traffic Generator . il va lire les logs de mrtg....en plus d'un joli graphe . 
 
sinon tu peux tjs lire /proc/net/dev   
 
Marsh Posté le 05-10-2001 à 05:47:36
qq lignes de php pour lire /proc/net/dev 
 
 // --------------------------------- 
 function stat_reseau() 
   { 
    $results = array(); 
 
    if ( $fd = fopen("/proc/net/dev", "r" ) ) { 
        while ( $buf = fgets($fd, 4096)) { 
 
            if ( preg_match( "/ ", $buf ) ) {
", $buf ) ) { 
                list( $dev_nom, $stats_list ) = preg_split( "/ ", $buf, 2 );
", $buf, 2 ); 
 
                $stats = preg_split( "/\s+/", trim($stats_list) ); 
                $results[$dev_nom] = array(); 
 
                $results[$dev_nom]['recu_bytes'] = $stats[0]; 
                $results[$dev_nom]['recu_packets'] = $stats[1]; 
                $results[$dev_nom]['recu_errs'] = $stats[2]; 
                $results[$dev_nom]['recu_drop'] = $stats[3]; 
 
                $results[$dev_nom]['envoye_bytes'] = $stats[8]; 
                $results[$dev_nom]['envoye_packets'] = $stats[9]; 
                $results[$dev_nom]['envoye_errs'] = $stats[10]; 
                $results[$dev_nom]['envoye_drop'] = $stats[11]; 
 
                $results[$dev_nom]['errs'] = $stats[2] + $stats[10]; 
                $results[$dev_nom]['drop'] = $stats[3] + $stats[11]; 
            } 
        } 
    } 
 
    return $results; 
  } 
 
 
 // recup du tableau 
 $net = stat_reseau(); 
   
 // decomposition et tout ce qu'on veut ...  
 while ( list($dev,$stat) = each($net) ) { 
 
        $dev = trim($dev); 
        if ($dev == "lo" ) continue; 
 
        if ($dev == "ppp0" )  { 
            get_bytes += $stat['recu_bytes']; 
            send_bytes += $stat['envoye_bytes']; 
          } 
  ......... 
  .......... 
  etc ... 
Marsh Posté le 05-10-2001 à 06:52:21
Un truc sympa est SNMP et MRTG => génération de grphiques, un coup de crontab et c'est actualisé en temps voulu et zou ça te sort la page web  
 
Marsh Posté le 04-10-2001 à 21:03:34
Voila j'aimerais trouver un compteur de transfert sur une interface donnée sous linux. Par ex voir cb de go sont transite (en up et donwn) sur le eth0 ou ppp0
merci