Оговорюсь сразу в одной конторе стал утекать трафик, попросили поймать злодея ;)
это не система биллинху это на коленке подсчет трафика сделанный кому поможет можете спасибо сказать ;)
всю критику в топку, хотите что-то по другому сделать - сделайте и напишите а то что скрипт г-но я и сам знаю :)
1. собсна запускаем tcpdump -i eth1 -qv -w /root/dump
2. пишим вот такой перл:
#!/usr/bin/perl
while (<STDIN>) {
chomp;
if (/^\S+\s+\S+\s+((?:\d+\.){3}\d+)\.\d+\s+\S+\s+((?:\d+\.){3}\d+)\.\d+\:\s+\S+\s+(\d+)/) {
$ip1 = $1;
$ip2 = $2;
$size = $3;
@ip1s = split(/\./,$ip1);
if ($ip1s[0] == 10 && $ip1s[3]!=1) { # тут $ip1s это первая цифирь подсети в которой юзвери, а последняя цифирь это посл. цифирь адреса роутера.
${$host1{$ip1}}{$ip2}+=$size;
} else {
${$host1{$ip2}}{$ip1}+=$size;
}
$total+=$size;
}
}
print ("\n");
sort(%host1);
foreach $ip1 (keys(%host1)) {
foreach $ip2 ( keys (%{$host1{$ip1}}) ) {
print ("$ip1\t$ip2\t" . int(${$host1{$ip1}}{$ip2}/1000) . "\n");
$tip{$ip1}+=${$host1{$ip1}}{$ip2};
i# print(${$host1{$ip1}}{$ip2} . "\n");
}
}
foreach $ip (keys(%tip)) {
print ($ip . "\t" . int ($tip{$ip}/1000000) . "Mb\n");
}
print("total: $total\n");
3. через некоторое время запускаем tcpdump -r dump -qNnn | ./dump.pl
все, моя закончил