@ip = (1.1.1.1 2.2.2.2 1.1.1.1 4.4.4.4 1.1.1.1 4.4.4.4)
####
IP -- Count
1.1.1.1 3
4.4.4.4 2
####
use strict;
use warnings;
my $fields = ();
my @logs = ();
my $reg_sip = ();
my $si = ();
my $sIp = ();
my $key = ();
my %sIp = ();
open FILE, "c:/perl/fw.log" or die $!;
while ($fields = )
{
@logs = split (/ /,$fields);
foreach $reg_sip (@logs)
{if ($reg_sip =~ m/src=\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/)
{$si = substr $reg_sip, 4; $sIp{$si} += 1; }}
}
my $top = 10;
print "\nTop Ten Sources are\n";
my $i =0;
foreach $key (sort {$sIp{$b} <=> $sIp{$a}} keys %sIp)
{print "\n$key\t - $sIp{$key}"; $i++; if ($i == $top){last;}}
## Result
Top Ten Sources are
10.71.74.100 - 2706
192.168.237.103 - 1896
192.168.237.119 - 1473
10.71.74.73 - 1302
192.168.237.110 - 650
10.71.74.139 - 325
10.71.74.74 - 238
192.168.33.32 - 213
192.168.237.247 - 124
192.168.237.250 - 18
####
use strict;
use warnings;
my @srcs = ();
open FILE, "c:/perl/fw.log" or die $!;
while ()
{
if (my ($src) =/\bsrc=(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/){push @srcs, $src;}
}
####
Code to print Top n unique ip's in descending order from @srcs.