While well done, and maybe necessary on a windows boxen, this might be 
major overkill for someone running a *nix box to do the testing. Also 
depends on what you want to do with the "results" of the test. For 
someone with access using "cron" with a utility like "curl" might be 
easier/faster.  For instance running a one liner in cron periodically to 
curl the head response and then fire off an email upon failure worked 
for us.

http://danconia.org


Jenda Krynicky wrote:
> From: Jason Ya hoo <[EMAIL PROTECTED]>
> 
>>Do you have any way or perl code to test Web Server is
>>still alive instead of using Internet Browser to
>>browse Web Server page every period. Thank you for
>>your help.
> 
> 
> I use something like this:
> 
> ....
> use LWP::UserAgent;
> my $ua = new LWP::UserAgent;
> $ua->timeout(20);
> 
> my %last_result;
> foreach my $url (@urls) {
>       $last_result{$url} = 'OK';
> }
> 
> ....
>       # the following code gets run every N minutes
>       foreach my $url (@urls) {
>               my $baseurl = $url;
>               Log "\tRequesting $url";
>               $url =~ s{(http://[^/:]+)/}{$1:80/};
>                       # the line above is there only because of some problems with
>                       # LWP in scripts compiled by PerlApp. You probably do not need 
>it
>                       # there.
>               $url .= '?time='.time();
>                       # I assume that the page will ignore the parameter.
>                       # this is just to make sure I do not get the page from a
>                       # cache/proxy
> 
>               my $request = HTTP::Request->new(GET => $url);
>               my $response = $ua->request($request);
> 
>               if ($response->is_success) {
>                       my $content = $response->content();
> 
>                       LogNT "\t\t$content";
> 
>                       if ($last_result{$baseurl} ne $content) {
>                               $last_result{$baseurl} = $content;
>                               LogNT "\t\tmailing!";
> 
>                               ref $sender->MailMsg({subject => "[JOBVIPeR ASP] " . 
> Win32::NodeName(),
>                                       msg => "$baseurl => $content\n at 
>".localtime(),
>                                       to => $mailto,
>                               }) or Log "Error in Mail::Sender : 
>$Mail::Sender::Error";
>                       }
> 
>               } else {
>                       my ($code,$message) = ( $response->code(), 
>$response->message());
>                       chomp($message);
>                       LogNT "\t\t$code : $message";
>                       if ($last_result{$baseurl} != $code) {
>                               $last_result{$baseurl} = $code;
>                               LogNT "\t\tmailing!";
> 
>                               if ($code == 500 and $message eq 'read timeout') {
>                                       ref $sender->MailMsg({subject => "[JOBVIPeR 
>ASP] HANGS@" . 
> Win32::NodeName(),
>                                               msg => "$baseurl at ".localtime(),
>                                               to => $mailto,
>                                       }) or Log "Error in Mail::Sender : 
>$Mail::Sender::Error";
>                               } else {
>                                       ref $sender->MailMsg({subject => "[JOBVIPeR 
>ASP] ERROR@" . 
> Win32::NodeName(),
>                                               msg => "$baseurl => $code : $message\n 
>at ".localtime(),
>                                               to => $mailto,
>                                       }) or Log "Error in Mail::Sender : 
>$Mail::Sender::Error";
>                               }
>                       }
>               }
>       }
> ....
> 
> 
> It's part of a bigger service that among all things watches the web 
> servers and reports if any of them hangs or goes down.
> 
> Log() writes the message to a log file and appends timestamp,
> LogNT() only writes to log file.
> 
> 
> Hope this gives you an idea, Jenda
> =========== [EMAIL PROTECTED] == http://Jenda.Krynicky.cz ==========
> There is a reason for living. There must be. I've seen it somewhere.
> It's just that in the mess on my table ... and in my brain
> I can't find it.
>                                       --- me
> 
> 



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

Reply via email to