Revision: 4486
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at December 21, 2007 07:53 by iblis
Initial Code
#!/usr/bin/perl -w
use strict;
#
# List apache server clients IPs by occurence (with country and provider info)
# perl administration web log apache
#
my %ips;
my $logfile = '/var/log/apache2/access.log';
open my $fh, '<', $logfile
or die "cannot open file $logfile: $!\n";
#
# hash ip occurences
while (<$fh>) {
$ips{$1}++ if (/^(\d+\.\d+\.\d+\.\d+)/);
}
#
# sort ip by occurence and print
# get whois data, parse and print
foreach my $ip (sort { $ips{$b} <=> $ips{$a} } keys %ips) {
print $ips{$ip} . "\t" . $ip;
my $result = qx{ whois -B -h whois.ripe.net $ip };
my ($country, $descr) = ('', '');
if ($result =~ /country:\s+(\w+)/) {
$country = $1;
}
if ($result =~ /descr:\s+(.+?)\n/) {
$descr = $1 ;
}
print "\t" . lc($country);
print " " . lc($descr) . "\n";
}
#
# command line alternative (without dns info):
# awk '{print $1}' /var/log/apache2/access.log | sort | uniq -c
Initial URL
Initial Description
Initial Title
List apache server clients IPs by occurence (with country and provider info)
Initial Tags
apache, log, web
Initial Language
Perl