#! /usr/local/bin/perl -w use strict; ### Code Here my @files = glob "/usr/local/apache/logs/*-access_log"; my %date; my %host; my %server; my $lines = 0; my $attacks = 0; my %months = (Jan=>'01', Feb=>'02', Mar=>'03', Apr=>'04', May=>'05', Jun=>'06', Jul=>'07', Aug=>'08', Sep=>'09', Oct=>'10', Nov=>'11', Dec=>'12', ); foreach (@files) { open(FH,$_) or die "Can't open $_"; my $server = $_; while (<FH>) { $lines++; next unless /default\.ida/; $attacks++; my @fields = split; $server{$server}++; $host{$fields[0]}++; my $date = join('-','2001', $months{substr($fields[3],4,3)}, substr($fields[3],1,2)); $date{$date}++; } close(FH); } print "$lines log lines, $attacks attacks\n"; foreach (sort keys %date) { print "$_ : $date{$_}\n"; } print "\n"; foreach (keys %server) { print "$_ : $server{$_}\n"; } print "\n"; my $onecount = 0; foreach (map { $_->[0] } sort { $b->[1] <=> $a->[1] } map { [$_,$host{$_}] } keys %host) { ++$onecount and next if $host{$_} == 1; printf "%43s : $host{$_}\n", $_; } printf "%43s : $onecount\n","(Single attack)";
In reply to CodeRed Log analyser by Brovnik
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |