Ами днес пуснах нет на машините в нас...окъ всичко тръгна с
изключение на рррое ама закърпихме положението...Та после ми
хрумна идеята и да следя трафика...та ето какво ми роди
главицата...(на някой може да му се стори мн просташки този
скрип, но това ми дойде на акъла...пък и не чаткам мн мн
програмирането)...Я кажете като цяло идеята стррува ли си?
За по нагледно съм го качил и тук :
http://regata2003.hit.bg/traff.pl
#!/usr/bin/perl
#Nastrojkite na IPtablses sa slednite
#Natwam wytreshnite ipta 192.168.0.0/28 kym edno wynshno
ip...
#Otchitane na obshtiqt swalen trafic "iptables -A FORWARD -d
192.168.0.X -c 0 0"
#Otchitane na free trafika "iptables -A FORWARD -s /ip to na
servera/ -d 192.168.0.X -c 0 0"
$free_server="212.50.28.254"; #IP to na servera to kojto
nqma da s ot4ita trafika.
sub check_unit;
print "Full_t\tFree_t\t\tIP\t\tFull_t_MB\tFree_t_MB";
for($ip=1; $ip <=5; $ip++) #stojnostite koito priema $ip
realno sa posledtana okteta na IP adresa.
{
$fulld=`iptables -L FORWARD -vn|grep 0.$ip|grep
0.0.0.0`; #wzima wseki red ot dadeno ip
$freed=`iptables -L FORWARD -vn|grep 0.$ip|grep
$free_server`; #wzema wseki red ot dadeno ip no ot4ita
trafika kym freetata
#Obshtiqt trafik
$traff_full=substr($fulld,6,5); #Grepwa obshtiqt trafik
za ip
$traff_free=substr($freed,6,5); #Grepwa bezplatniq
tafik za ip
$name=substr($fulld,66,15); #Wzema tekushtoto ip za
koeto shte se prawi prowerkata
$ftraff=check_unit("$fulld");
$frtraff=check_unit("$freed");
$all=$ftraff-$frtraff; #Kolko realno e swaleniqt
trafik bez tozi ot freeto
print
"$traff_full\t$traff_free\t$name\t\t$ftraff\t\t$frtraff\t$all\n"; #Obsht
trafik Bezplaten trafik IP adress Full traff Free Traff
}
sub check_unit
{
my $local_1=$_[0];
$char=substr($local_1,10,1); #prawi izwadka na
posledniqt simwol ot poleto "bytes"
#i kleda kakyw e toj
if( $char == K)
{
$data_c=substr($local_1,6,4)/1000;
}
elsif ($char == M)
{
$data_c=substr($local_1,6,4);
}
elsif ( $char == G)
{
$data_c=substr($local_1,6,4)*1000;
}
else
{
$data_c=substr(substr($local_1,6,5)/1000000,0,6); #To4nost
do hilqdnata
}
return($data_c);
}
|