# !/usr/bin/perl $URLToPing = $ARGV[0]; $PIN = $ARGV[1]; $Delay = $ARGV[2]; $RetryDelay = $ARGV[3]; $Debug = $ARGV[4]; $HTTPping = "/bin/HTTPping.pl"; print "URL = $URLToPing\n" if ($Debug ==1); print "Pin = $PIN\n" if ($Debug==1); print "Delay = $Delay seconds\n" if ($Debug==1); print "Retry Delay = $RetryDelay seconds\n" if ($Debug==1); # sleep a random amount up to one delay period # this helps 'spread out' multiple instances of # script running simultaneously # sleep(int(rand($Delay)) + 1); # start out using the current ping result as the # current server status $HTTPPingResult = HTTPPing($URLToPing); $ServerStatus = $HTTPPingResult; # send a page when the monitor starts SendPage("Monitor for $URLToPing up at " . localtime(), $PIN); if ($ServerStatus == 1) { SendPage("$URLToPing is UP at startup " . localtime(), $PIN); } else { SendPage("$URLToPing is DOWN at startup " . localtime(), $PIN); } # loop indefinately, checking the site and paging # if necessary while (1==1) { # HTTP ping the site $HTTPPingResult = HTTPPing($URLToPing); print "ServerStatus = $ServerStatus\n" if ($Debug == 1); print "HTTPPingResult = $HTTPPingResult\n" if ($Debug == 1); # check to see if the site went down if (($ServerStatus == 1) and ($HTTPPingResult == 0)) { print "The site appears down, waiting to verify.\n" if ($Debug == 1); sleep($RetryDelay); # re-ping the site $HTTPPingResult = HTTPPing($URLToPing); if ($HTTPPingResult == 0) { print " Verified. site down\n"; $ServerStatus = 0; SendPage("$URLToPing is DOWN " . localtime(), $PIN); } else { print "Did not verify, site still up\n"; } } # check to see if the site is up if (($ServerStatus == 0) and ($HTTPPingResult == 1)) { $ServerStatus = 1; print "$URLToPing up at " . localtime() . "\n" if ($Debug ==1); SendPage("$URLToPing is UP at " . localtime(), $PIN); } # wait between pings sleep ($Delay); } sub HTTPPing { print "HTTPPing called\n" if ($Debug == 1); my $URL = $ARGV[0]; $command = "$HTTPping $URL"; my $pingresult = system($command)/256; return $pingresult; } sub SendPage { use HTTP::Request::Common; require LWP::UserAgent; my ($Message, $PIN) = @_; $to = "$PIN,1"; $ua = new LWP::UserAgent; $req = POST 'http://204.71.160.11/destineer/ss_paging.cgi', [ cmd => 'send', to => $to, msg => $Message]; $response = $ua->request($req); }