挑出IIS日志里某一文件的请求次数
要统计广告的弹出次数,找不到这种IIS日志分析器,只好写了个脚本。
=pod
说明
把iis日志传到LINUX,再挑出日志里出现关键字的行,如cat ex*.log |grep divMove.js>>iis.log
再生成excel文件,如xxx.pl iis.log>>iis.csv
=cut
#!/usr/bin/perl -w
use strict;
my $file;
my $eachline;
my %hash;
my @arr_file=@ARGV;
foreach $file(@arr_file){
open(IIS_LOG,$file)||die"err: $! \n";
while (defined ($eachline =<IIS_LOG>)) {
#正则
#2010-05-20 00:03:15 W3SVC1 218.5.79.57 GET /divMove.js - 80 - 221.178.26.163 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1;+Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1)+) 218.5.79.57 200 0 64 0 394
if($eachline=~/^2010-\d+-\d+\s.+ W3SVC\d*\s+218\.5\.79\.57\s+GET\s+\/divMove.js\s+-\s+80\s+-\s+(?<getip>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s+.+\d$/){
#print "$+{getip}\n";
#以IP做哈希表的key,累加出现次数
if(exists $hash{$+{getip}}){
$hash{$+{getip}}=$hash{$+{getip}}+1
}
else{
$hash{$+{getip}}=1
}
}
}
}
my $key;
my $value;
while (($key, $value) = each %hash){
print "$key,$value\n";
}
以上脚本生成以下表格
| 202.100.121.46 | 1209 |
| 123.180.14.253 | 185 |
| 222.90.15.209 | 179 |

浙公网安备 33010602011771号