Приветы всем !
Хотелось бы услышать замечания по этому скрипту. я начинающий PERLовик, поэтому хотелось бы узнать что я делаю через Ж.
------------------------------------------------------------------
#!/usr/local/bin/perl
$ip=@ARGV[0];
$data_left_y=@ARGV[1];
$data_left_m=@ARGV[2];
$data_left_d=@ARGV[3];
$data_left_h=@ARGV[4];
$data_left_min=@ARGV[5];
$data_left=$data_left_y . $data_left_m . $data_left_d . $data_left_h . $data_left_min;
#
$data_right_y=@ARGV[6];
$data_right_m=@ARGV[7];
$data_right_d=@ARGV[8];
$data_right_h=@ARGV[9];
$data_right_min=@ARGV[10];
$data_right=$data_right_y . $data_right_m . $data_right_d . $data_right_h . $data_right_min;
#
$traff_in=0;
$traff_out=0;
$traff_in_all=0;
$traff_out_all=0;
#
$day=($data_left_y . $data_left_m . $data_left_d)-1;
do {
$day=$day+1;
open(FILE, "/var/trafd/BAC/$day") || print "";
while(<FILE>)
{
s/\n//g;
s/ //g;
($ip1,$port1,$ip2,$port2,$proto_a,$data,$alldata,$time_y,$time_m,$time_d,$time_h,$time_min ) = split(/:/,$_);
$time=$time_y . $time_m . $time_d . $time_h . $time_min;
if ($time >= $data_left && $time <= $data_right )
{
if ($ip1 eq $ip) {$traff_out+=$data; $traff_out_all+=$alldata };
if ($ip2 eq $ip) {$traff_in+=$data; $traff_in_all+=$alldata };
}
}
close(FILE);
} until $day >= $data_right_y . $data_right_m . $data_right_d;
print "$ip\n";
print "$traff_out\n";
print "$traff_in\n";
print "$traff_out_all\n";
print "$traff_in_all\n";
------------------------------------------------------------------
/var/trafd/BAC/ тестовые файлы вида:
20041113
20041114
20041115
и т.д.
содержимое вида:
192.168.10.1 :2601 :194.67.28.104 :80 :tcp : 2303: 3103: 200411131635
192.168.10.1 :1370 :205.188.11.228 :5190 :tcp : 599: 1079: 200411131635
192.168.10.1 :2618 :212.45.20.167 :80 :tcp : 716: 1644: 200411131635
194.135.19.14 :80 :192.168.10.16 :2544 :tcp : 95005: 105325: 200411131635
194.135.19.14 :80 :192.168.10.16 :2547 :tcp : 82042: 92362: 200411131635
194.135.19.14 :80 :192.168.10.16 :2552 :tcp : 82034: 92354: 200411131635
192.168.10.16 :2552 :194.135.19.14 :80 :tcp : 0: 10200: 200411131635
192.168.10.16 :2544 :194.135.19.14 :80 :tcp : 0: 10200: 200411131635
192.168.10.16 :2547 :194.135.19.14 :80 :tcp : 0: 10200: 200411131635
205.188.9.129 :5190 :192.168.10.21 :1487 :tcp : 1944: 2624: 200411131635
217.174.96.78 :80 :192.168.10.2 :1698 :tcp : 335830: 347310: 200411131640
192.168.10.2 :1698 :217.174.96.78 :80 :tcp : 0: 8800: 200411131640
192.168.10.9 :1968 :82.138.20.87 :80 :tcp : 4981: 7349: 200411131640
192.168.10.9 :1969 :82.138.20.87 :80 :tcp : 2518: 6646: 200411131640
скрипт запускается:
./traf.pl 192.168.10.1 2004 11 13 08 00 2004 11 14 08 00
т.е. подсчитать трафик по 192.168.10.1
в период с 2004.11.13 08:00
по 2004.11.14 08:00
Буду рад любым замечаниям. Спасибо.