Let me ask this then.  If I wanted to work around the fluctuations, could I
just search for a string in the doc rather the going to a position and only
looking there?

If so does anyone know of documentation on the web that would help me with
this?

Thanks
Lance

-----Original Message-----
From: John W. Krahn [mailto:[EMAIL PROTECTED]]
Sent: Thursday, September 05, 2002 4:04 PM
To: [EMAIL PROTECTED]
Subject: Re: Strange error

Lance Prais wrote:
>
> I am experiencing the most bizarre problem with my perl script.  I am
> running the below script on windows nt, that may be the root of the
> problem..  The script reads a file and checks to see it the words
"Sleeping
> for 10 seconds" appears. If it appears four times in a row it sends a text
> message so, we can correct the problem.
>
> What seems to happen is after the script runs for about 2 months with out
> restarting the box, at some point it starts reading "Sleeping for 1"
The
> other thing I notice is when this occurs the output of looks different.
>
> For example:
>
> When it is working it looks like this
> Sleeping for 10 seconds
> Sleeping for 10 seconds
> Sleeping for 10 seconds
> Sleeping for 10 seconds
> Send email
>
> When it is not working it looks like this:
>         Sleeping for 1
>         Sleeping for 1
>         Sleeping for 1
>         Sleeping for 1
>         END
>
> As you notice there is a tb added to the script.. Anyone have an Idea to
why
> this occurring.

It could be because you are assuming that the string you are looking for is
always at the same position in the string.



> Below you will see the script
>
> Thank you in advance for you help
> Lance
>
> #!/usr/bin/perl

#!/usr/bin/perl -w
use strict;

> my $count = 0;
> open MAIL_LOG, ">> siebel_mail.log" or
>     die "can't append to siebl_mail.log: $!";
> # do this 7 times
> for (1 .. 7) {
>     open OUTPUT, '..\\..\\srvrmgr /ser server.com /e CHK_ENT_PRD /s
> CHK_SBL_PRD /u xxxxxx /p xxxxxxx /c "list tasks for server CHK_SBL_PRD
> component Email Manager" |' or
>       die "can't run srvrmgr: $!";
>     <OUTPUT> for 1 .. 22;  # skip first 22 lines of output
>     my $line = substr <OUTPUT>, 106, 22;
                                  ^^^^^^^
Is the string always at this position?

>     close OUTPUT;
>
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
>         if ($count eq  4)
                     ^^
You should use a numerical operator to compare numbers.

>         {
>
>                 use Mail::Sendmail;                    #Send and email if
there are
> errors
>                 %mail = ( To      =>  '[EMAIL PROTECTED]',
>                 From    =>  '[EMAIL PROTECTED]',
>                 Subject =>  '',
>                 Message =>   'Email Manager hung on Apollo'
>                 );
>                 sendmail(%mail) or die $Mail::Sendmail::error;
>                 print "OK. Log says:\n", $Mail::Sendmail::log;
>
>         print "Apollo is stuck sent Email\n";
>         if ($hour> 12)
>         {
>                 print MAIL_LOG "Error Sending Email
",$hour-12,":$min\n";
>         }
>         else
>         {
>                 print MAIL_LOG "Error Sending Email    $hour:$min\n";
>       }
>         print  MAIL_LOG
>
"---------------------------------------------------------------------------
> ---- \n";
>         close MAIL_LOG;
>         exit;
>
>         }
>         else
>         {
>                 if ($line eq "Sleeping for 10 second")
>                 {
>                         $count++;
>                         print "Count $count\n";
>                         print MAIL_LOG $line, "\n";
>                 }
>                 else
>                 {
>
>                         print $line, "\n";
>                         print "Count $count\n";
>                         print MAIL_LOG $line, "\n";
>                 }
>     sleep 10;
>         }
>     }
>         if ($hour> 12)
>         {
>                 print MAIL_LOG "Completed    ",$hour-12,":$min\n";
>         }
>         else
>         {
>                 print MAIL_LOG "Completed    $hour:$min\n";
>         }
>    print  MAIL_LOG
>
"---------------------------------------------------------------------------
> ---- \n";
>   close MAIL_LOG;



This should work better:

#!/usr/bin/perl -w
use strict;

# the string to search for
my $search = 'Sleeping for 10 seconds';
my $count = 0;
my( $min, $hour );

open MAIL_LOG, ">> siebel_mail.log" or die "can't append to siebl_mail.log:
$!";
# do this 7 times
for ( 1 .. 7 ) {
    open OUTPUT, '..\\..\\srvrmgr /ser server.com /e CHK_ENT_PRD /s
CHK_SBL_PRD /u xxxxxx /p xxxxxxx /c "list tasks for server CHK_SBL_PRD
component Email Manager" |'
        or die "can't run srvrmgr: $!";
    <OUTPUT> for 1 .. 22;  # skip first 22 lines of output
    # set $found to true or false
    my $found = <OUTPUT> =~ /$search/;
    close OUTPUT;
    ( $min, $hour ) = (localtime)[1,2];
    $hour -= 12 if $hour > 12;
    if ( $count == 4 ) {
        use Mail::Sendmail;   # Send and email if there are errors
        %mail = ( To      =>  '[EMAIL PROTECTED]',
                  From    =>  '[EMAIL PROTECTED]',
                  Subject =>  '',
                  Message =>   'Email Manager hung on Apollo'
                );
        sendmail(%mail) or die $Mail::Sendmail::error;
        print "OK. Log says:\n", $Mail::Sendmail::log;

        print "Apollo is stuck sent Email\n";
        print MAIL_LOG "Error Sending Email    $hour:$min\n";
        print  MAIL_LOG
"---------------------------------------------------------------------------
---- \n";
        close MAIL_LOG;
        exit 0;
        }
    else {
        if ( $found ) {
            $count++;
            }
        else {
            print "$search\n";
            }
        print "Count $count\n";
        print MAIL_LOG "$search\n";
        sleep 10;
        }
    }
print MAIL_LOG "Completed    $hour:$min\n";
print MAIL_LOG
"---------------------------------------------------------------------------
---- \n";
close MAIL_LOG;




John
--
use Perl;
program
fulfillment

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to