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