Простецкий анализатор лога апача
16-04-2014 12:46
к комментариям - к полной версии
- понравилось!
Скриптик, который смотрит сколько было разных ip-адресов за сутки. Основная мутотень была с регулярными выражениями перла, вопросы жадности и проч.
#!/usr/bin/perl
open(FH,"<","access_log");
$unique=1; #каждый адрес считаем уникальным, пока обратное не доказано
while() #просматриваем файл лога
{
($ip,$rem)=split(/- -/,$_); #вычленяем айпишник и остаток
$rem=~m/\[.+\]/;
$datetime = $&;#вытаскиваем дату и время
$datetime=~m/\[(.+?):/;
$date = $1;#вытаскиваем дату, на время забиваем (потом может пригодится, можно переделать)
$date =~s/\// /g;#меняем в дате косую черту на пробелы
if($date!=$prevdate)#если дата изменилась, то делаем следующее
{
print "$#arr\n"; #печатаем, скоко было адресов в предыдущий день
print "******* $date *********\n"; #печатаем дату
$prevdate=$date;#приравниваем значения
$unuque=1;#адреса снова уникальны, ведь новый день
$ip_u=0;#обнуляем уник. адрес
@arr=0;#обнуляем массив адресов
}
if($ip != $ip_u) #если попался другой адрес
{
$ip_u=$ip;
foreach(@arr) #просматриваем массив уникальных адресов
{
$unique=0 if($ip_u == $_) #и если оно там было, то он не уникальный
}
if($unique)#если адрес уникален
{
push @arr,$ip_u ;#заносим в массив
print "$ip_u\n"; #и печатаем
}
$unique=1;#снова считаем, что попадется уникальный адрес
}
}
print "$#arr\n";#печатаем число адресов за последний (сегодняшний) день
вверх^
к полной версии
понравилось!
в evernote