Craig Sharp wrote:
>
> I am lost. I have the following script that opens the log file WUGEvent.log and
>looks for the
> statment "UP", replaces spaces and writes out the new log file. It works great!
>
> Here is the problem. I need to read in another file (wuglist.txt) containing a list
>of server
> names and then compare each name to the line currently being processed. Then if it
>matches,
> write the line out to a new file following the conversion.
>
> I tried to read the server name from the file into a variable and add a && to the
>reg expression
> looking for UP but it did not work:
>
> if (/\bUP\b/ && $server_name)
>
> I am lost in how to setup the loop and compare.
>
> Here is the script and sample log files:
>
> #!/usr/bin/perl
>
>#--------------------------------------------------------------------------------------
> # log_convert.pl script
>
>#--------------------------------------------------------------------------------------
>
> open (inlogfile, "WUGEvent.log") || die "$!\n";
> open (outlogfile, ">newlog.log") || die "$!\n";
> @lines = <inlogfile>;
> select outlogfile;
> foreach (@lines) {
> chomp;
> if (/\bUP\b/) {
> s/\t+/|/g;
> s/missed //g;
> print "$_\n";
> }
> }
> close inlogfile;
> close outlogfile;
>
> �------------------------------------------------------------------------------------
> Sample WUGEvent.log
>
> 20011022 143514 C:\Program Files\WhatsUp\b31.wup UP roush_31
> 10.31.1.1 missed 4
> 20011022 143515 C:\Program Files\WhatsUp\b31.wup Alert successful
> process N:roush_31 F:768 A:SMTPMail/Beryl (e-mail)
>
> [ snip ]
Here is one way to do it:
#!/usr/bin/perl -w
use strict;
#--------------------------------------------------------------------------------------
# log_convert.pl script
#--------------------------------------------------------------------------------------
my %server;
open SVRS, 'wuglist.txt' or die "Cannot open 'wuglist.txt': $!";
{
chomp( my @temp = <SVRS> );
@server{ @temp } = ();
}
close SVRS;
open INLOGFILE, 'WUGEvent.log' or die "Cannot open 'WUGEvent.log': $!";
open OUTLOGFILE, '>newlog.log' or die "Cannot open 'newlog.log': $!";
while ( <INLOGFILE> ) {
my @fields = split;
if ( $fields[4] eq 'UP' and exists $server{ $fields[5] } ) {
print OUTLOGFILE "@fields[0..6,8]";
}
}
close INLOGFILE;
close OUTLOGFILE;
__END__
John
--
use Perl;
program
fulfillment
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]