Build precise queries to find exactly what you need
Press ESC to close
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
A perl script to check availibility of http URLs.
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 http://localhost/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:
We’ve completely redesigned the world’s largest repository of Nagios plugins and monitoring tools. Join thousands of users sharing monitoring solutions for servers, applications, and everything in between.
Due to our redesign, all existing accounts require a password reset to access your account again.
Ready to explore 6,100+ projects and contribute to the community?
Reset Password Create Account
Happy Monitoring!