Can any help me figure out why the output of the following script
doesn't list any data?? Just the headers??

=== begin script ===
#!/usr/bin/perl -w

=head1 DESCRIPTION

 scanel.pl - NT - Pull errors and warnings out of the event logs

 Schedule:  7:30 a.m. every weekday.

 Output File:  events.txt

Create a summary report of all notable logged events from all servers. 

This script dumps the event logs from a list of NT/2000 servers listed

in servers.lst using the somarsoft tool dumpevt.exe (used this tool 
because it keeps track of the last event read so we only get stuff we 
haven't seen each time we run it).  It will create a file listing all 
events for each server since the last run.

 Commands: `dumpevt.exe /logfile=sys /outfile=$tempfile /computer=$_ 
/reg=local_machine`;
           `dumpevt.exe /logfile=app /outfile=$tempfile /computer=$_ 
/reg=local_machine`;
           `dumpevt.exe /logfile=sec /outfile=$tempfile /computer=$_ 
/reg=local_machine`;

Search Pattern: /Error|Warning|Save 
Dump|,512,|,513,|,516,|,517,|,531,|,533,|,534,|,535,|,539,|,608,|,609,|,610,|,611,|,612,|,618,|,624,|,625,|,626,|,628,|,629,|,630,|,631,|,634,|,635,|,636,|,637,|,638,|,639,|,640,|,641,|,642,|,643,/


 Event  Description
 ------------------------------
 512    Windows NT is starting up.
 513    Windows NT is shutting down.  All logon sessions will be
terminated 
by this shutdown.
 516    Internal resources allocated for the queuing of audit messages
have 
been exhausted, leading to the loss of some audits. Number of audit 
messages discarded: number
 517    The audit log was cleared      Primary User Name: user name    
Primary Domain: computer name    Primary Logon ID: text    Client User

Name: user name    Client Domain: computer name    Client Logon ID:
text
 531    Logon Failure: Reason: Account currently disabled User Name:
user 
name Domain: name Logon Type: name Logon Process: parameter 
Authentication Package: parameter Workstation Name: computer name
 533    Logon Failure: Reason: User not allowed to logon at this
computer 
User Name: user name Domain: name Logon Type: name Logon Process: 
parameter Authentication Package: parameter Workstation Name: computer

name
 534    Logon Failure: Reason: The user has not been granted the
requested 
logon type at this machine User Name: user name Domain: name Logon
Type: 
name Logon Process: parameter Authentication Package: parameter 
Workstation Name: computer name
 535    Logon Failure: Reason: The specified account's password has
expired 
User Name: user name Domain: name Logon Type: name Logon Process: 
parameter Authentication Package: parameter Workstation Name: computer

name
 539    Logon Failure:    Reason: Account locked out    User Name: user

name    Domain: computer name    Logon Type: text    Logon Process:
text 
   Authentication Package: text    Workstation Name: computer name
 608    User Right Assigned: User Right: parameter Assigned To: name 
Assigned By: User Name: name Domain: user name Logon ID: parameter
 609    User Right Removed: User Right: parameter Removed From: name 
Removed By: User Name: name Domain: user name Logon ID: parameter
 610    New Trusted Domain:    Domain Name: computer name    Domain ID:

text    Established By:    User Name: user name    Domain: computer
name 
   Logon ID: text 
 611    Removing Trusted Domain:    Domain Name: computer name    Domain

ID: text    Removed By:    User Name: user name    Domain: computer
name 
   Logon ID: text   
 612    Audit Policy Change:   New Policy:    Success Failure        
parameter     parameter System        parameter     parameter 
Logon/Logoff        parameter     parameter Object Access        
parameter     parameter Privilege Use        parameter     parameter0 
Detailed Tracking        parameter     parameter Policy Change        
parameter     parameter Account Management   Changed By:    User Name:

user name    Domain Name: name    Logon ID: number
 618    Trusted Domain Information Modified: Domain Name: name Domain
ID: 
parameter Modified By: User Name: user name Domain: name Logon ID: 
parameter
 624    User Account Created:    New Account Name: user name    New
Domain: 
computer name    New Account ID: text    Caller User Name: user name   

Caller Domain: computer name    Caller Logon ID: text    Privileges
text 
  
 625    User Account Type Change:    Target Account Name: user name    
Target Domain: computer name    Target Account ID: text    New Type: 
text    Caller User Name: user name    Caller Domain: computer name   

Caller Logon ID: text
 626    User Account Enabled: Target Account Name: name Target Domain:
name 
Target Account ID: parameter Caller User Name: user name Caller Domain:

name Caller Logon ID: parameter
 628    User Account password set: Target Account Name: name Target
Domain: 
name Target Account ID: value Caller User Name: user name Caller
Domain: 
name Caller Logon ID: value
 629    User Account Disabled: Target Account Name: name Target Domain:

name Target Account ID: value Caller User Name: user name Caller
Domain: 
name Caller Logon ID: value
 630    User Account Deleted: Target Account Name: name Target Domain:
name 
Target Account ID: value Caller User Name: user name Caller Domain:
name 
Caller Logon ID: value Privileges: parameter
 631    Global Group Created:    New Account Name: account    New
Domain: 
computer name    New Account ID: text    Caller User Name: user name   

Caller Domain: computer name    Caller Logon ID: text    Privileges: 
text
 634    Global Group Deleted:    Target Account Name: account    Target

Domain: computer name    Target Account ID: text    Caller User Name: 
user name    Caller Domain: computer name    Caller Logon ID: text    
Privileges: text 
 635    Local Group Created:    New Account Name: account    New Domain:

computer name    New Account ID: text    Caller User Name: user name   

Caller Domain: computer name    Caller Logon ID: text    Privileges: 
text
 636    Local Group Member Added:    Member: name    Target Account
Name: 
name    Target Domain: name    Target Account ID: number    Caller User

Name: user name    Caller Domain: name    Caller Logon ID: number    
Privileges: text
 637    Local Group Member Removed:    Member: name    Target Account
Name: 
name    Target Domain: name    Target Account ID: number    Caller User

Name: user name    Caller Domain: name    Caller Logon ID: number    
Privileges: text 
 638    Local Group Deleted:    Target Account Name: account    Target 
Domain: computer name    Target Account ID: text    Caller User Name: 
user name    Caller Domain: text    Caller Logon ID: computer name    
Privileges: text
 639    Local Group Changed:    Target Account Name: account    Target 
Domain: computer name    Target Account ID: text    Caller User Name: 
user name    Caller Domain: computer name    Caller Logon ID: text    
Privileges: text 
 640    General Account Database Change:    Type of change: name   
Object 
Type: name    Object Name: name    Object ID: number    Caller User 
Name: user name    Caller Domain: computer name    Caller Logon ID: 
number 
 641    Global Group Changed:    Target Account Name: account    Target

Domain: computer name    Target Account ID: text    Caller User Name: 
user name    Caller Domain: computer name    Caller Logon ID: text    
Privileges: text
 642    User Account Changed: account Target Account Name: name Target 
Domain: name Target Account ID: value Caller User Name: user name
Caller 
Domain: name Caller Logon ID: value Privileges: parameter
 643    Domain Policy Changed: Domain: computer name Domain ID: text
Caller 
User Name: user name Caller Domain: computer name Caller Logon ID: text

Privileges: text

=head2 Dependancies:

=over 4

=item 1. A flat text file named servers.lst with one resolveable 
servername per line.

=item 2. dumpevt.exe and dumpevt.ini are in the path.

=item 3. Run under an admin account that exists on each server.

=item 4. Auditing has been enabled and configured in accordance with
the 
standard build procedure.

=back

=head1 CHANGE HISTORY

 09/06/01  - Create
 11/07/01  - Added confirmation message to the parsing line.
 11/13/01  - Added parsing for 'Save Dump' to catch bugcheck 
reboots (informational events with a non-unique event id - 1001).
 06/26/02  - move output to reports dir
 07/06/02  - Formatted output.  Added comments and error checking.
 07/09/02  - Stripped ^` from description field and normalized 
spacing.  Changed comments to POD.
 07/10/02  - Commented out space normalization.  Added additional 
event IDs to check for.

=cut

use strict;                     # don't want sloppy code
use File::Copy;                 # so we can use perl's copy
function instead of shelling out to command prompt

my ($sec, $min, $hour, $mday, $mon, $year, $wkday, $yday, $isdst) =
localtime(time);        # get the current time
my $ts = sprintf "%02.0d/%02.0d/%04.0d %02.0d:%02.0d:%02.0d",($mon+1,
$mday, $year+1900, $hour, $min, $sec);  # format current time
my $datestring = sprintf "%02.0d%02.0d%02.0d", $mon+1, $mday,
$year%100;
my $datadir  = "c:\\scripts\\scan";                     # Base directory
for this program and its output
my $tempdir  = "c:\\scripts\\scan\\temp";               # Directory for
dump files (dumpevt didn't like the / so use \\)
my $srvlst   = "$datadir\\servers.lst";                  
        # List of NT servers to be checked
my $tempfile = "$tempdir\\event.log";                           #
Temporary file to dump events into for parsing
my $outfile  = "$datadir\\reports\\events.txt";                 # Report
of notable events
my $lastfile = "$datadir\\reports\\events.prev.txt";     #Pre-existing
Report of notable events
my $permfile = "$datadir\\reports\\archive\\events.$datestring.txt";  #
"permanent" dup of above
my ($log, $date, $time, $source, $eventid, $type, $category, $user,
$computer, $description); # the different pieces of information from the
event logs
my @servers;                                                    # list
var to store server names

                                                     
print "# Event Log Scan run at $ts (generated by scanel.pl)\n\n";

print "Saving previous run's file...\n\n";
copy ($outfile, $lastfile) or print "*** Unable to save previous run's
output: $! ***\n";  # Copy current file to "last" copy of file

open OUTFILE, ">$outfile" or die "*** Couldn't open $outfile for
writing: $! ***\n"; # no need to continue if we can't make the report
print OUTFILE "# Event Log Scan run at $ts (generated by
scanel.pl)\n\n"; # standard header

open (SERVERS, $srvlst) or die "*** Couldn't open $srvlst for reading:

$! ***\n"; # no need to continue if we can't get the list of servers
while (<SERVERS>) {
        chomp;
        push(@servers,$_);                                      # put
the server names in a list to limit disk access
}
close SERVERS;

foreach(@servers) {                                             # dump
the event logs into $tempfile and then look through it for errors &
warnings
        chomp;
        my $cursrv = $_;                                        #
current server name so we don't lose it when we go into the tempfile
        print "Dumping event logs of $cursrv...\n";
        $tempfile = "$tempdir\\$cursrv".".event.log";           # create
a temp file based on the server name so we know what were looking at
        my $i = 0;                                              #
counter to see if anything is printed to OUTFILE.
        my $j = 0;                                              #
counter to see if anything is read from the TEMPFILE.
        `dumpevt.exe /logfile=sys /outfile=$tempfile /computer=$cursrv
/reg=local_machine`; # the /reg=local_machine puts the last read event
number in the HKLM so it will keep track no matter what account the
script is run under
        `dumpevt.exe /logfile=app /outfile=$tempfile /computer=$cursrv
/reg=local_machine`;
        `dumpevt.exe /logfile=sec /outfile=$tempfile /computer=$cursrv
/reg=local_machine`;
        print "Logging notable events for $_, Please wait...\n";
        print OUTFILE "\n------------\n$cursrv\n------------\n"; #
standard report seperator
        print OUTFILE "Log      Date      Time    Description\n";
        print OUTFILE 
"---------------------------------------------------------------------------------------------------------------------------\n";

        if(open (TEMPFILE, $tempfile)) {
                while (<TEMPFILE>) {
                        if (/Error|Warning|Save 
630,|,631,|,634,|,635,|,636,|,637,|,638,|,639,|,640,|,641,|,642,|,643,/)

{ # whatever we are looking for, usually bad stuff
                                ($log, $date, $time, $source, $eventid,
$type, $category, $user, 
$computer, $description) = split (/,/); # seperate the raw line into
its parts (it is comma seperated)
                                $description =~ s/\^\`//g;      # get
rid of the ^` in the output
                                #$description =~ s/\s+/ /g;     # make
the spacing consistant
                                write (OUTFILE);                # if we
find it, put it in the report
                                $i++;                           #
increment the counter so we know we printed something for this server
                        }                                       # end
parsing if
                $j++;                                           #
increment the counter so we know we read something for this server
                }                                               # end
while (<TEMPFILE>)
                close TEMPFILE;
                unlink ($tempfile);                             # erase
this runs tempfiles, for fresh start next time
                if ($i == 0 and $j > 1) {                       # if we
didn't find anything everything must be ok
                        print OUTFILE "No notable events detected.\n";
                }                                               # end
validity if
        } else {
                print OUTFILE "*** Unable to open event logs: $! ***\n";
# we don't want to stop, just note which server didn't respond
        }                                                       # end
open (TEMPFILE, $tempfile) if/else
}                                                               # end
foreach(@servers)

($sec, $min, $hour, $mday, $mon, $year, $wkday, $yday, $isdst) =
localtime(time); # get the time again so we can see how long it took
$ts = sprintf "%02.0d/%02.0d/%04.0d %02.0d:%02.0d:%02.0d",($mon+1,
$mday, $year+1900, $hour, $min, $sec); # format current time

print "\n--- scanel.pl finished processing at $ts ---\n";
print OUTFILE "\n\n--- scanel.pl finished processing at $ts ---\n"; #
standard footer
close OUTFILE;

print "\n\nArchiving results file...\n";
copy ($outfile, $permfile);                                     # Create
permanent copy of events file

exit 0;

############################ formats #############################

format OUTFILE =
@<<  @>>>>>>>>>  @>>>>>>>
@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

$log,   $date,     $time,    $description

~~
@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

                           $description
.
==== end script ====

==== begin output ===

# Event Log Scan run at 07/17/2002 06:36:01 (generated by scanel.pl)


------------
mikesdell
------------
Log      Date      Time    Description
---------------------------------------------------------------------------------------------------------------------------

------------
sea-mon
------------
Log      Date      Time    Description
---------------------------------------------------------------------------------------------------------------------------

------------
sea-monitor2
------------
Log      Date      Time    Description
---------------------------------------------------------------------------------------------------------------------------
*** Unable to open event logs: No such file or directory ***


--- scanel.pl finished processing at 07/17/2002 06:36:02 ---
==== end output ====



===
Mike Singleton 
Network Analyst
(253) 272-1916  x1259
(253) 405-1968 (cellular)
[EMAIL PROTECTED]

DaVita Inc.
_______________________________________________
Perl-Win32-Admin mailing list
[EMAIL PROTECTED]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs

Reply via email to