diff options
author | Ton Voon <ton.voon@opsera.com> | 2011-01-21 13:14:33 +0000 |
---|---|---|
committer | Ton Voon <ton.voon@opsera.com> | 2011-01-21 13:14:33 +0000 |
commit | 1a5a83bb82c35d888229fe9f815fbc663c0f4d3c (patch) | |
tree | 56a059f3cb927547d2905e65ed837b36affcc565 /plugins | |
parent | ae2a66913706e4cb3fc870485abe34c0f3696124 (diff) | |
download | monitoring-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.c | 11 | ||||
-rw-r--r-- | plugins/tests/check_procs.t | 6 |
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; | |||
8 | use NPTest; | 8 | use NPTest; |
9 | 9 | ||
10 | if (-x "./check_procs") { | 10 | if (-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" ); | |||
113 | is( $result->return_code, 2, "Checking against RSS > 70MB" ); | 113 | is( $result->return_code, 2, "Checking against RSS > 70MB" ); |
114 | is( $result->output, 'RSS CRITICAL: 5 crit, 0 warn out of 95 processes [WindowServer, SystemUIServer, Safari, Mail, Safari]', "Output correct" ); | 114 | is( $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)'" ); | ||
117 | is( $result->return_code, 0, "Checking no pipe symbol in output" ); | ||
118 | is( $result->output, "PROCS OK: 0 processes with regex args '(nosuchname,nosuch2name)'", "Output correct" ); | ||
119 | |||