sub server_events {
print_header();
print"
SysAdmin Tools v0.1 (beta)
\n";
my $servername = $q->param('servername') || 'localhost';
my $eventtype = $q->param('eventtype') || 'System';
my $eventquan = $q->param('eventquan') || '10';
print qq{$servername is Server
};
print qq{$eventtype is Event Type
};
print qq{$eventquan is Event Quantity
};
my ($EventLog, $count, $first, $key);
$first = $count = 0;
my $event={
'Source' => NULL,
'Computer' => NULL,
'Length' => NULL,
'Category' => NULL,
'RecordNumber' => NULL,
'TimeGenerated' => NULL,
'Timewritten' => NULL,
'EventID' => NULL,
'EventType' => NULL,
'ClosingRecordNumber' => NULL,
'Strings' => NULL,
'Data', => NULL,
};
$EventLog = new Win32::EventLog( "$eventtype","$servername" ) || die $!;
$EventLog->GetOldest(\$first) || die $!;
$EventLog->GetNumber(\$count) || die $!;
$EventLog->Read((EVENTLOG_SEEK_READ | EVENTLOG_BACKWARDS_READ),$first+$count,$event);
for my $i ($first+$count-$eventquan+1..$first+$count)
{
$EventLog->Read((EVENTLOG_SEQUENTIAL_READ|EVENTLOG_BACKWARDS_READ),0,$event);
my ($sec,$min,$hour,$mday,$mon,$year,$sday,$yday,$isdst) = localtime($event->{'TimeGenerated'});
print sprintf("%15s -> %02d\-%02d\-%02d, %02d:%02d\n",'timestamp',$year,$mon+1,$mday,$hour,$min);
#to get a readable EventId
$event->{'EventID'} = $event->{'EventID'} & 0xffff;
foreach $key ('RecordNumber','Category','Source','EventID', 'EventType', 'Strings', 'Data')
{
print sprintf( "%15s -> %s\n",$key, $event->{$key} );
print "
"
}
print "\n
";
}
}