summaryrefslogtreecommitdiffstats
path: root/plugins
diff options
context:
space:
mode:
authorTon Voon <ton.voon@opsera.com>2011-01-21 13:14:33 +0000
committerTon Voon <ton.voon@opsera.com>2011-01-21 13:14:33 +0000
commit1a5a83bb82c35d888229fe9f815fbc663c0f4d3c (patch)
tree56a059f3cb927547d2905e65ed837b36affcc565 /plugins
parentae2a66913706e4cb3fc870485abe34c0f3696124 (diff)
downloadmonitoring-plugins-1a5a83bb82c35d888229fe9f815fbc663c0f4d3c.tar.gz
Fix for regex input of '|', being output causing problems with Nagios' parsing of
performance data. Now replaced with ','
Diffstat (limited to 'plugins')
-rw-r--r--plugins/check_procs.c11
-rw-r--r--plugins/tests/check_procs.t6
2 files changed, 15 insertions, 2 deletions
diff --git a/plugins/check_procs.c b/plugins/check_procs.c
index 2151fb38..d875a618 100644
--- a/plugins/check_procs.c
+++ b/plugins/check_procs.c
@@ -318,6 +318,8 @@ process_arguments (int argc, char **argv)
318 int err; 318 int err;
319 int cflags = REG_NOSUB | REG_EXTENDED; 319 int cflags = REG_NOSUB | REG_EXTENDED;
320 char errbuf[MAX_INPUT_BUFFER]; 320 char errbuf[MAX_INPUT_BUFFER];
321 char *temp_string;
322 int i=0;
321 static struct option longopts[] = { 323 static struct option longopts[] = {
322 {"warning", required_argument, 0, 'w'}, 324 {"warning", required_argument, 0, 'w'},
323 {"critical", required_argument, 0, 'c'}, 325 {"critical", required_argument, 0, 'c'},
@@ -450,7 +452,14 @@ process_arguments (int argc, char **argv)
450 regerror (err, &re_args, errbuf, MAX_INPUT_BUFFER); 452 regerror (err, &re_args, errbuf, MAX_INPUT_BUFFER);
451 die (STATE_UNKNOWN, "PROCS %s: %s - %s\n", _("UNKNOWN"), _("Could not compile regular expression"), errbuf); 453 die (STATE_UNKNOWN, "PROCS %s: %s - %s\n", _("UNKNOWN"), _("Could not compile regular expression"), errbuf);
452 } 454 }
453 asprintf (&fmt, "%s%sregex args '%s'", (fmt ? fmt : ""), (options ? ", " : ""), optarg); 455 /* Strip off any | within the regex optarg */
456 temp_string = strdup(optarg);
457 while(temp_string[i]!='\0'){
458 if(temp_string[i]=='|')
459 temp_string[i]=',';
460 i++;
461 }
462 asprintf (&fmt, "%s%sregex args '%s'", (fmt ? fmt : ""), (options ? ", " : ""), temp_string);
454 options |= EREG_ARGS; 463 options |= EREG_ARGS;
455 break; 464 break;
456 case 'r': /* RSS */ 465 case 'r': /* RSS */
diff --git a/plugins/tests/check_procs.t b/plugins/tests/check_procs.t
index 1d0c034e..d71c83a2 100644
--- a/plugins/tests/check_procs.t
+++ b/plugins/tests/check_procs.t
@@ -8,7 +8,7 @@ use Test::More;
8use NPTest; 8use NPTest;
9 9
10if (-x "./check_procs") { 10if (-x "./check_procs") {
11 plan tests => 48; 11 plan tests => 50;
12} else { 12} else {
13 plan skip_all => "No check_procs compiled"; 13 plan skip_all => "No check_procs compiled";
14} 14}
@@ -113,3 +113,7 @@ $result = NPTest->testCmd( "$command --metric=RSS -c 70000 -v" );
113is( $result->return_code, 2, "Checking against RSS > 70MB" ); 113is( $result->return_code, 2, "Checking against RSS > 70MB" );
114is( $result->output, 'RSS CRITICAL: 5 crit, 0 warn out of 95 processes [WindowServer, SystemUIServer, Safari, Mail, Safari]', "Output correct" ); 114is( $result->output, 'RSS CRITICAL: 5 crit, 0 warn out of 95 processes [WindowServer, SystemUIServer, Safari, Mail, Safari]', "Output correct" );
115 115
116$result = NPTest->testCmd( "$command --ereg-argument-array='(nosuchname|nosuch2name)'" );
117is( $result->return_code, 0, "Checking no pipe symbol in output" );
118is( $result->output, "PROCS OK: 0 processes with regex args '(nosuchname,nosuch2name)'", "Output correct" );
119