summaryrefslogtreecommitdiffstats
path: root/plugins
diff options
context:
space:
mode:
authortonvoon <ton.voon@opsview.com>2010-06-23 14:44:34 (GMT)
committertonvoon <ton.voon@opsview.com>2010-06-23 14:44:34 (GMT)
commit1252195ed5cdf7b5f5fdc1fd5f2b09827a46f6ce (patch)
tree17fdee97da603cce596098bc86385165a940d5c0 /plugins
parent18f6835edaf7d640a2c9e476cb1babdbdadbfd9b (diff)
downloadmonitoring-plugins-1252195ed5cdf7b5f5fdc1fd5f2b09827a46f6ce.tar.gz
Display missing search string and URL when failed (Duncan Ferguson #2999924)
Diffstat (limited to 'plugins')
-rw-r--r--plugins/check_http.c7
-rwxr-xr-xplugins/tests/check_http.t10
2 files changed, 15 insertions, 2 deletions
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;
100int server_expect_yn = 0; 100int server_expect_yn = 0;
101char server_expect[MAX_INPUT_BUFFER] = HTTP_EXPECT; 101char server_expect[MAX_INPUT_BUFFER] = HTTP_EXPECT;
102char string_expect[MAX_INPUT_BUFFER] = ""; 102char string_expect[MAX_INPUT_BUFFER] = "";
103char output_string_search[30] = "";
103double warning_time = 0; 104double warning_time = 0;
104int check_warning_time = FALSE; 105int check_warning_time = FALSE;
105double critical_time = 0; 106double critical_time = 0;
@@ -1037,7 +1038,11 @@ check_http (void)
1037 1038
1038 if (strlen (string_expect)) { 1039 if (strlen (string_expect)) {
1039 if (!strstr (page, string_expect)) { 1040 if (!strstr (page, string_expect)) {
1040 asprintf (&msg, _("%sstring not found, "), msg); 1041 strncpy(&output_string_search[0],string_expect,sizeof(output_string_search));
1042 if(output_string_search[sizeof(output_string_search)-1]!='\0') {
1043 bcopy("...",&output_string_search[sizeof(output_string_search)-4],4);
1044 }
1045 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);
1041 result = STATE_CRITICAL; 1046 result = STATE_CRITICAL;
1042 } 1047 }
1043 } 1048 }
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") {
157 } 157 }
158} 158}
159 159
160my $common_tests = 62; 160my $common_tests = 66;
161my $ssl_only_tests = 6; 161my $ssl_only_tests = 6;
162if (-x "./check_http") { 162if (-x "./check_http") {
163 plan tests => $common_tests * 2 + $ssl_only_tests; 163 plan tests => $common_tests * 2 + $ssl_only_tests;
@@ -205,6 +205,14 @@ sub run_common_tests {
205 is( $result->return_code, 0, "/file/root search for string"); 205 is( $result->return_code, 0, "/file/root search for string");
206 like( $result->output, '/^HTTP OK: HTTP/1.1 200 OK - 274 bytes in [\d\.]+ second/', "Output correct" ); 206 like( $result->output, '/^HTTP OK: HTTP/1.1 200 OK - 274 bytes in [\d\.]+ second/', "Output correct" );
207 207
208 $result = NPTest->testCmd( "$command -u /file/root -s NonRoot" );
209 is( $result->return_code, 2, "Missing string check");
210 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");
211
212 $result = NPTest->testCmd( "$command -u /file/root -s NonRootWithOver30charsAndMoreFunThanAWetFish" );
213 is( $result->return_code, 2, "Missing string check");
214 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");
215
208 216
209 my $cmd; 217 my $cmd;
210 $cmd = "$command -u /slow"; 218 $cmd = "$command -u /slow";