cspctec has asked for the wisdom of the Perl Monks concerning the following question:
UPDATE: Problem solved! Thanks everyone for all of the help!
Hi, I have the following data:
---------- <DATA> ------------ Oct 17 10:35:39 esw001tff2 [Root]IP Spoofing from 255.255.255.255 to 2 +55.255.255.255! Occurred 1 time. (2012 17 10:35:39) Oct 17 10:35:40 esw001tff2 [Root]IP Spoofing from 255.255.255.255 to 2 +55.255.255.255! Occurred 1 time. (2012 17 10:35:40) Oct 17 10:35:41 esw001tff2 [Root]IP Spoofing from 255.255.255.255 to 2 +55.255.255.255! Occurred 1 time. (2012 17 10:35:41) Oct 17 10:35:42 esw001tff2 [Root]IP Spoofing from 255.255.255.255 to 2 +55.255.255.255! Occurred 1 time. (2012 17 10:35:42) Oct 17 10:35:43 esw001tff2 [Root]Server reset. Occurred 1 time. (2012 +17 10:35:43) Oct 17 10:35:44 esw001tff2 [Root]Server reset. Occurred 1 time. (2012 +17 10:35:44) Oct 17 10:35:45 esw001tff2 [Root]IP Spoofing from 255.255.255.255 to 2 +55.255.255.255! Occurred 1 time. (2012 17 10:35:45) Oct 17 10:35:46 esw001tff2 [Root]IP Spoofing from 255.255.255.255 to 2 +55.255.255.255! Occurred 1 time. (2012 17 10:35:46) Oct 17 10:35:47 esw001tff2 [Root]Root login failure! Occurred 1 time. +(2012 17 10:35:47) Oct 17 10:35:48 esw001tff2 [Root]Root login failure! Occurred 1 time. +(2012 17 10:35:48) Oct 17 10:35:49 esw001tff2 [Root]Root login failure! Occurred 1 time. +(2012 17 10:35:49) Oct 17 10:35:50 esw001tff2 [Root]IP Spoofing from 255.255.255.255 to 2 +55.255.255.255! Occurred 1 time. (2012 17 10:35:50)
I'll try to explain what I'm trying to do the best I can. I'm trying to get an output that looks like the following:
DEVICE --> esw001tff2 DATE --> Oct 17 TIME --> 10:35:39 ERROR --> IP Spoofing from 255.255.255.255 to 255.255.255.255! Occurr +ed 1 time. The above error occurred 7 times
The code I'm using looks like the following:
my %error_count; my (@data = <DATA>, @list, @splitter); foreach (@data) { $error_count{$1}++ if m/\](.*)\(20/, @data; @splitter = split (/\s/, @data); push (@list, @splitter); } for (keys %error_count) { print "DEVICE\t--> $list[3]\n"; print "DATE\t--> $list[0] $list[1]\n"; print "TIME\t--> $list[2]\n"; print "ERROR\t--> "$_\n"; print "\nThe above error occurred $error_count{$_} times\n"; }
The problem is, I can't get the array to update with the hash output. In the output, it gives me the correct count of the errors, but it just takes the first device, time and date and sticks them in the output. I need the device, date and time to be correct with the count.
For the time, I just need the first time that the error occurred, like on this one the time for the IP Spoofing would be 10:35:39, and root login failure would be 10:35:47
This code is the code I remember from work. I don't have the actual code with me, but I wrote it all so it should be accurate
Thank you if you can help
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Counting keys in a hash
by choroba (Cardinal) on Nov 15, 2012 at 22:45 UTC | |
Re: Counting keys in a hash
by NetWallah (Canon) on Nov 16, 2012 at 06:01 UTC | |
by cspctec (Sexton) on Nov 19, 2012 at 19:51 UTC | |
by NetWallah (Canon) on Nov 19, 2012 at 20:34 UTC | |
by cspctec (Sexton) on Nov 20, 2012 at 14:05 UTC | |
by Athanasius (Archbishop) on Nov 20, 2012 at 14:50 UTC |