Build precise queries to find exactly what you need
Press ESC to close
Join our next live webinar: “Advanced Nagios Monitoring Techniques” – Register Now
Your review has been submitted and is pending approval.
A perl script to check availibility of http URLs. Returns HTTP error code in Status information.
Current Version
Last Release Date
June 22, 2009
Owner
Nagios Exchange
Compatible With
A perl script to check availibility of http URLs.
A perl script to check availibility of http URLs. Returns HTTP error code in Status information. Unlike check_http, this script can be used to test mission critical URLs like http://some.com/?status/other. Works with both https and http.
Added PID number for temporary files, that the script can run in parallel with multiple processes. Added a check if one arguments is defined at script startup. Note: The script requires wget to be installed at /usr/bin/. So I updated the source code, here is my version: #!/usr/bin/perl # (C) Unknown author at https://exchange.nagios.org/directory/Plugins/Websites%2C-Forms-and-Transactions/check_url/details # # Changes: # 2016-01-07: Stephan Ferraro # Added PID number for temporary files, that the script can run in parallel with multiple processes. # Added a check if one arguments is defined at script startup. -- Stephan Ferraro use strict; if ($#ARGV == -1) { print STDERR "usage: check_url.pl URLn"; exit 1; } my $wget = '/usr/bin/wget --output-document=/tmp/tmp_'.$$.'.html --no-check-certificate -S'; my ($url) = @ARGV; my @OK = ("200"); my @WARN = ("400", "401", "403", "404", "408"); my @CRITICAL = ("500", "501", "502", "503", "504"); my $TIMEOUT = 20; my %ERRORS = ('UNKNOWN' , '-1', 'OK' , '0', 'WARNING', '1', 'CRITICAL', '2'); my $state = "UNKNOWN"; my $answer = ""; $SIG{'ALRM'} = sub { print ("ERROR: check_url Time-Out $TIMEOUT s n"); exit $ERRORS{"UNKNOWN"}; }; alarm($TIMEOUT); system ("$wget $url 2>/tmp/tmp_".$$.".res1"); if (! open STAT1, "/tmp/tmp_".$$.".res1") { print ("$state: $wget returns no result!"); exit $ERRORS{$state}; } close STAT1; `cat /tmp/tmp_$$.res1|grep 'HTTP/1'|tail -n 1 >/tmp/tmp_$$.res`; open (STAT, "/tmp/tmp_".$$.".res"); my @lines = ; close STAT; if ($lines[0]=~/HTTP/1.d+ (d+)( .*)/) { my $errcode = $1; my $errmesg = $2; $answer = $answer . "$errcode $errmesg"; if ('1' eq &chkerrwarn($errcode) ) { $state = 'WARNING'; } elsif ('2' eq &chkerrcritical($errcode)) { $state = 'CRITICAL'; } elsif ('0' eq &chkerrok($errcode)) { $state = 'OK'; } } sub chkerrcritical { my $err = $1; foreach (@CRITICAL){ if ($_ eq $err) { return 2; } } return -1; } sub chkerrwarn { my $err = $1; foreach (@WARN){ if ($_ eq $err) { return 1; } } return -1; } sub chkerrok { my $err = $1; foreach (@OK){ if ($_ eq $err) { return 0; } } return -1; } `rm /tmp/tmp_$$.html /tmp/tmp_$$.res /tmp/tmp_$$.res1`; print ("$state: $answern"); exit $ERRORS{$state};
You must be logged in to submit a review.
To:
From: