[nagiosplug] Display missing search string and URL when failed ...

"Ton Voon" <[email protected]>
Newsgroups gmane.network.nagios.plugins.cvs
Message-ID <[email protected]>
 Module: nagiosplug
 Branch: master
 Commit: 1252195ed5cdf7b5f5fdc1fd5f2b09827a46f6ce
 Author: tonvoon <[email protected]>
   Date: Wed Jun 23 14:44:34 2010 +0000
    URL: http://nagiosplug.git.sf.net/git/gitweb.cgi?p=nagiosplug/nagiosplug;a=commit;h=1252195

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";


------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate 
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the 
lucky parental unit.  See the prize list and enter to win: 
http://p.sf.net/sfu/thinkgeek-promo
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.