#!/usr/bin/perl # simple squid log "billing" for czuby.net use Time::localtime; if (@ARGV < 1) { print "Usage: $0 \n"; exit 0; } @urle = @daty = undef; %redutant = (); $i = $j = $k = $fromdate = $enddate = 0; while() { chomp; $j++; if (m!(\d+)\.\d+\s+\d+ (\d+\.\d+\.\d+\.\d+) (TCP_HIT|TCP_MISS|TCP_REFRESH_HIT|TCP_REF_FAIL_HIT|TCP_REFRESH_MISS|TCP_CLIENT_REFRESH_MISS|TCP_IMS_HIT|TCP_MEM_HIT)/\d{3} (\d+) GET (?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))? (\w+|-) .*!) { if ($2 eq $ARGV[0]) { $k++; $tm = localtime($1); $data = sprintf("%02d-%02d-%04d %02d:%02d:%02d", $tm->mday, $tm->mon+1, $tm->year+1900, $tm->hour, $tm->min, $tm->sec); if ($fromdate == 0) { $fromdate = $data; } $url = $5 . "://" . $6 . $7; if ($1 - $redutant{$6} > 60 && $6 ne "adserver.gadu-gadu.pl" && $6 ne "appmsg.gadu-gadu.pl" && $host ne $6) { $urle[$i] = $url; $daty[$i++] = $data; $host = $6; } $redutant{$6} = $1; } } } $enddate = $daty[$i-1]; $ile = @urle; print << "EOF"; [anal by venglin\@freebsd.lublin.pl] Przetworzono $j linii logów dla $ARGV[0] $k dopasowanych, $ile po eliminacji ($fromdate do $enddate) Oto spis używanych adresów WWW: EOF for(1..$ile) { format STDOUT = @>>>>>>>>>>>>>>>>>>>> @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< $daty[$_], $urle[$_] . write; }