From 1252195ed5cdf7b5f5fdc1fd5f2b09827a46f6ce Mon Sep 17 00:00:00 2001 From: tonvoon Date: Wed, 23 Jun 2010 14:44:34 +0000 Subject: [PATCH] Display missing search string and URL when failed (Duncan Ferguson #2999924) --- NEWS | 1 + plugins/check_http.c | 7 ++++++- plugins/tests/check_http.t | 10 +++++++++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/NEWS b/NEWS index c2917c1..7211b14 100644 --- a/NEWS +++ b/NEWS @@ -7,6 +7,7 @@ This file documents the major additions and syntax changes between releases. New check_radius -N option which allows for specifying the value of the NAS-IP-Address attribute New check_snmp --rate option to store differences between invocations. Saves state in PREFIX/var/{plugin} check_snmp -l label option now also changes the perfdata label. See WARNINGS + check_http now displays the missing search string and the URL in the output when failed (Duncan Ferguson - #2999924) Updated Nagios::Plugin perl module Updated gnulib to June 2010 FIXES diff --git a/plugins/check_http.c b/plugins/check_http.c index 7f773c8..f08ad17 100644 --- a/plugins/check_http.c +++ b/plugins/check_http.c @@ -100,6 +100,7 @@ int server_url_length; int server_expect_yn = 0; char server_expect[MAX_INPUT_BUFFER] = HTTP_EXPECT; char string_expect[MAX_INPUT_BUFFER] = ""; +char output_string_search[30] = ""; double warning_time = 0; int check_warning_time = FALSE; double critical_time = 0; @@ -1037,7 +1038,11 @@ check_http (void) if (strlen (string_expect)) { if (!strstr (page, string_expect)) { - asprintf (&msg, _("%sstring not found, "), msg); + strncpy(&output_string_search[0],string_expect,sizeof(output_string_search)); + if(output_string_search[sizeof(output_string_search)-1]!='\0') { + bcopy("...",&output_string_search[sizeof(output_string_search)-4],4); + } + asprintf (&msg, _("%sstring '%s' not found on '%s://%s:%d%s', "), msg, output_string_search, use_ssl ? "https" : "http", host_name ? host_name : server_address, server_port, server_url); result = STATE_CRITICAL; } } diff --git a/plugins/tests/check_http.t b/plugins/tests/check_http.t index 88b77d3..f03933b 100755 --- a/plugins/tests/check_http.t +++ b/plugins/tests/check_http.t @@ -157,7 +157,7 @@ if ($ARGV[0] && $ARGV[0] eq "-d") { } } -my $common_tests = 62; +my $common_tests = 66; my $ssl_only_tests = 6; if (-x "./check_http") { plan tests => $common_tests * 2 + $ssl_only_tests; @@ -205,6 +205,14 @@ sub run_common_tests { is( $result->return_code, 0, "/file/root search for string"); like( $result->output, '/^HTTP OK: HTTP/1.1 200 OK - 274 bytes in [\d\.]+ second/', "Output correct" ); + $result = NPTest->testCmd( "$command -u /file/root -s NonRoot" ); + is( $result->return_code, 2, "Missing string check"); + like( $result->output, qr%^HTTP CRITICAL: HTTP/1\.1 200 OK - string 'NonRoot' not found on 'https?://127\.0\.0\.1:\d+/file/root'%, "Shows search string and location"); + + $result = NPTest->testCmd( "$command -u /file/root -s NonRootWithOver30charsAndMoreFunThanAWetFish" ); + is( $result->return_code, 2, "Missing string check"); + like( $result->output, qr%HTTP CRITICAL: HTTP/1\.1 200 OK - string 'NonRootWithOver30charsAndM...' not found on 'https?://127\.0\.0\.1:\d+/file/root'%, "Shows search string and location"); + my $cmd; $cmd = "$command -u /slow"; -- 2.30.2