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