37,742
社区成员
发帖
与我相关
我的任务
分享sub format_line{
my $line = shift;
return unless ($line);
my $char = ' ';
my $offset = 0;
my @line_arr;
my ($ip,$time,$url,$status,$size);
my $result = index($line,$char,$offset);
while ($result != -1){
push(@line_arr,$result);
$offset = $result + 1;
$result = index($line,$char,$offset);
}
my $ip_end = $line_arr[0];
my $ip = substr($line,0,$ip_end);
my $time_start = $line_arr[2] + 1;
my $time_end = $line_arr[3] - $time_start;
my $time = substr($line,$time_start,$time_end);
$time = str2stamp($time,$log_tm_fmt);
my $url_start = $line_arr[5] + 1;
my $url_end = $line_arr[6] - $url_start;
my $url = substr($line,$url_start,$url_end);
my $status_start = $line_arr[7] + 1;
my $status_end = $line_arr[8] - $status_start;
my $status = substr($line,$status_start,$status_end);
my $size_start = $line_arr[8] + 1;
my $size_end = $line_arr[9] - $size_start;
my $size = substr($line,$size_start,$size_end);
my $time = $time - ($time % 300);
$hour{$time} += $size;
return ($ip,$time,$url,$status,$size);
}my $line_fmt = "^([^ ]+) [^ ]+ [^ ]+ \\[([^ ]+) [^ ]+\\] \\\"[^ ]+ [^ ]+ HTTP/1\.[0|1]?\\\" ([\\d]+) ([\\d]+).*";
my %hour;
while (<>){
chomp;
my $line = $_;
my @line = map(/$line_fmt/,$line);
my $ip = $line[0]; # ipadress
next if (($ip eq '127.0.0.1') || ($ip =~ /^192\.168\.\d{1,3}\.\d{1,3}/));
my $status = $line[2];
next if ($status =~ /^(40|30|50)/);
my $timestr = str2stamp(substr($line[1],1),$log_tm_fmt);
my $size = $line[3];
my $time = $timestr - ($timestr % 300);
$hour{$time} += $size;
}