Prog pour compter le trafic qui passe sur une interface reseau

Prog pour compter le trafic qui passe sur une interface reseau - Linux et OS Alternatifs

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

Reply

Marsh Posté le 04-10-2001 à 21:03:34   

Reply

Marsh Posté le 04-10-2001 à 21:16:57    

tu peux le voir avec ifconfig :  
 

Code :
  1. eth0      Link encap:Ethernet  HWaddr 00:50:FC:25:0B:6C 
  2.           inet addr:192.168.13.20  Bcast:192.168.13.255  Mask:255.255.255.0
  3.           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
  4.           RX packets:431377 errors:5 dropped:1 overruns:1 frame:0
  5.           TX packets:255408 errors:0 dropped:0 overruns:0 carrier:0
  6.           collisions:1021 txqueuelen:100
  7.           RX bytes:293473641 (279.8 Mb)  TX bytes:31750115 (30.2 Mb)
  8.           Interrupt:10 Base address:0xd000


---------------
-- NO SLACKERS - violators will be fsck'd & tar'd
Reply

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

Reply

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 :)

Reply

Marsh Posté le 04-10-2001 à 23:39:08    

Code :
  1. #! /usr/bin/perl
  2. # rxtx.pl made on 2001/10/04 by _PinG_ ping@root42.net
  3. $bla = <STDIN>;
  4. $mis :\t$2\n" if ($bla =~ /\(([a-zA-Z0-9. ]+)\).*\(([a-zA-Z0-9. ]+)\)/);


 
;)
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 :p, 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 ;)


---------------
-- NO SLACKERS - violators will be fsck'd & tar'd
Reply

Marsh Posté le 04-10-2001 à 23:46:45    

y'a aussi la version super porc (ma préférée) :

Code :
  1. print "Recus :\t$1\nEmis :\t$2\n" if (<STDIN> =~ /\((.+)\).*\((.| +)\)/);


... 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 ;)


---------------
-- NO SLACKERS - violators will be fsck'd & tar'd
Reply

Marsh Posté le 05-10-2001 à 02:18:53    

k,etload, mais je ne suis pas sûr


---------------
Mandriva : parce que nous le valons bien ! http://linux-wizard.net/index.php
Reply

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  ;)


---------------
Do androïds dream of electric sheep ?
Reply

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 ) ) {
                list( $dev_nom, $stats_list ) = preg_split( "/:/", $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 ...


---------------
Do androïds dream of electric sheep ?
Reply

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 ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed