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]