Revision: 2046
http://nagiosplug.svn.sourceforge.net/nagiosplug/?rev=2046&view=rev
Author: hweiss
Date: 2008-08-25 11:42:57 +0000 (Mon, 25 Aug 2008)
Log Message:
-----------
The "-e" option now accepts a comma-delimited list of expected status
lines (Sven Nierlein - 1894496).
Modified Paths:
--------------
nagiosplug/trunk/NEWS
nagiosplug/trunk/THANKS.in
nagiosplug/trunk/plugins/check_http.c
nagiosplug/trunk/plugins/tests/check_http.t
Modified: nagiosplug/trunk/NEWS
===================================================================
--- nagiosplug/trunk/NEWS 2008-08-22 13:08:08 UTC (rev 2045)
+++ nagiosplug/trunk/NEWS 2008-08-25 11:42:57 UTC (rev 2046)
@@ -10,6 +10,7 @@
check_snmp now only prints perfdata for non numeric values (#1867716)
check_icmp now supports packet size modification
check_http now sends the Host header first to fix 301s on servers with vitrual hosts (Michael Harris).
+ check_http -e now accepts a comma-delimited list of expected status codes
libtap now included with this distribution for easier testing. Run ./configure with --enable-libtap
1.4.12 27th May 2008
Modified: nagiosplug/trunk/THANKS.in
===================================================================
--- nagiosplug/trunk/THANKS.in 2008-08-22 13:08:08 UTC (rev 2045)
+++ nagiosplug/trunk/THANKS.in 2008-08-25 11:42:57 UTC (rev 2046)
@@ -237,3 +237,4 @@
Rob Windsor
Hilko Bengen
Michael Harris
+Sven Nierlein
Modified: nagiosplug/trunk/plugins/check_http.c
===================================================================
--- nagiosplug/trunk/plugins/check_http.c 2008-08-22 13:08:08 UTC (rev 2045)
+++ nagiosplug/trunk/plugins/check_http.c 2008-08-25 11:42:57 UTC (rev 2046)
@@ -573,8 +573,26 @@
}
}
+/* Checks if the server 'reply' is one of the expected 'statuscodes' */
+static int
+expected_statuscode (const char *reply, const char *statuscodes)
+{
+ char *expected, *code;
+ int result = 0;
+ if ((expected = strdup (statuscodes)) == NULL)
+ die (STATE_UNKNOWN, _("HTTP UNKNOWN - Memory allocation error\n"));
+ for (code = strtok (expected, ","); code != NULL; code = strtok (NULL, ","))
+ if (strstr (reply, code) != NULL) {
+ result = 1;
+ break;
+ }
+
+ free (expected);
+ return result;
+}
+
static void
check_document_dates (const char *headers)
{
@@ -878,14 +896,15 @@
(no_body ? " [[ skipped ]]" : page));
/* make sure the status line matches the response we are looking for */
- if (!strstr (status_line, server_expect)) {
+ if (!expected_statuscode (status_line, server_expect)) {
if (server_port == HTTP_PORT)
asprintf (&msg,
- _("Invalid HTTP response received from host\n"));
+ _("Invalid HTTP response received from host: %s\n"),
+ status_line);
else
asprintf (&msg,
- _("Invalid HTTP response received from host on port %d\n"),
- server_port);
+ _("Invalid HTTP response received from host on port %d: %s\n"),
+ server_port, status_line);
die (STATE_CRITICAL, "HTTP CRITICAL - %s", msg);
}
@@ -1262,7 +1281,8 @@
#endif
printf (" %s\n", "-e, --expect=STRING");
- printf (" %s\n", _("String to expect in first (status) line of server response (default: "));
+ printf (" %s\n", _("Comma-delimited list of strings, at least one of them is expected in"));
+ printf (" %s", _("the first (status) line of the server response (default: "));
printf ("%s)\n", HTTP_EXPECT);
printf (" %s\n", _("If specified skips all other status line logic (ex: 3xx, 4xx, 5xx processing)"));
printf (" %s\n", "-s, --string=STRING");
Modified: nagiosplug/trunk/plugins/tests/check_http.t
===================================================================
--- nagiosplug/trunk/plugins/tests/check_http.t 2008-08-22 13:08:08 UTC (rev 2045)
+++ nagiosplug/trunk/plugins/tests/check_http.t 2008-08-25 11:42:57 UTC (rev 2046)
@@ -18,6 +18,8 @@
if ($pid) {
# Parent
#print "parent\n";
+ # give our webserver some time to startup
+ sleep(1);
} else {
# Child
#print "child\n";
@@ -58,7 +60,7 @@
}
if (-x "./check_http") {
- plan tests => 13;
+ plan tests => 15;
} else {
plan skip_all => "No check_http compiled";
}
@@ -97,5 +99,10 @@
$cmd = "$command -u /statuscode/201 -e 200";
$result = NPTest->testCmd( $cmd );
is( $result->return_code, 2, $cmd);
-like( $result->output, '/^HTTP CRITICAL - Invalid HTTP response received from host on port /', "Output correct: ".$result->output );
+like( $result->output, '/^HTTP CRITICAL - Invalid HTTP response received from host on port \d+: HTTP/1.1 201 Created/', "Output correct: ".$result->output );
+$cmd = "$command -u /statuscode/200 -e 200,201,202";
+$result = NPTest->testCmd( $cmd );
+is( $result->return_code, 0, $cmd);
+like( $result->output, '/^HTTP OK HTTP/1.1 200 OK - 89 bytes in ([\d\.]+) seconds/', "Output correct: ".$result->output );
+
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.