summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornafets <nafets@users.noreply.github.com>2014-11-17 22:00:45 (GMT)
committernafets <nafets@users.noreply.github.com>2014-11-17 22:00:45 (GMT)
commitbb16b73130519cf5e93340480c8fd5e7e696a15f (patch)
tree23bf275bfe4bc317f18527cf061cd947c8632eeb
parent668efcda1e1e33de5b442c704c8f2d0a64c59f56 (diff)
downloadmonitoring-plugins-bb16b73.tar.gz
added option to exit with an warning, if there is output on STDERRrefs/pull/1301/head
-rw-r--r--plugins/check_by_ssh.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/plugins/check_by_ssh.c b/plugins/check_by_ssh.c
index a877f88..bc172c9 100644
--- a/plugins/check_by_ssh.c
+++ b/plugins/check_by_ssh.c
@@ -49,6 +49,7 @@ unsigned int commands = 0;
49unsigned int services = 0; 49unsigned int services = 0;
50int skip_stdout = 0; 50int skip_stdout = 0;
51int skip_stderr = 0; 51int skip_stderr = 0;
52int warn_on_stderr = 0;
52char *remotecmd = NULL; 53char *remotecmd = NULL;
53char **commargv = NULL; 54char **commargv = NULL;
54int commargc = 0; 55int commargc = 0;
@@ -109,7 +110,10 @@ main (int argc, char **argv)
109 if(chld_err.lines > skip_stderr) { 110 if(chld_err.lines > skip_stderr) {
110 printf (_("Remote command execution failed: %s\n"), 111 printf (_("Remote command execution failed: %s\n"),
111 chld_err.line[skip_stderr]); 112 chld_err.line[skip_stderr]);
112 return max_state_alt(result, STATE_UNKNOWN); 113 if ( warn_on_stderr )
114 return max_state_alt(result, STATE_WARNING);
115 else
116 return max_state_alt(result, STATE_UNKNOWN);
113 } 117 }
114 118
115 /* this is simple if we're not supposed to be passive. 119 /* this is simple if we're not supposed to be passive.
@@ -182,6 +186,7 @@ process_arguments (int argc, char **argv)
182 {"skip", optional_argument, 0, 'S'}, /* backwards compatibility */ 186 {"skip", optional_argument, 0, 'S'}, /* backwards compatibility */
183 {"skip-stdout", optional_argument, 0, 'S'}, 187 {"skip-stdout", optional_argument, 0, 'S'},
184 {"skip-stderr", optional_argument, 0, 'E'}, 188 {"skip-stderr", optional_argument, 0, 'E'},
189 {"warn-on-stderr", no_argument, 0, 'W'},
185 {"proto1", no_argument, 0, '1'}, 190 {"proto1", no_argument, 0, '1'},
186 {"proto2", no_argument, 0, '2'}, 191 {"proto2", no_argument, 0, '2'},
187 {"use-ipv4", no_argument, 0, '4'}, 192 {"use-ipv4", no_argument, 0, '4'},
@@ -301,6 +306,9 @@ process_arguments (int argc, char **argv)
301 else 306 else
302 skip_stderr = atoi (optarg); 307 skip_stderr = atoi (optarg);
303 break; 308 break;
309 case 'W': /* exit with warning if there is an output on stderr */
310 warn_on_stderr = 1;
311 break;
304 case 'o': /* Extra options for the ssh command */ 312 case 'o': /* Extra options for the ssh command */
305 comm_append("-o"); 313 comm_append("-o");
306 comm_append(optarg); 314 comm_append(optarg);
@@ -408,6 +416,8 @@ print_help (void)
408 printf (" %s\n", _("Ignore all or (if specified) first n lines on STDOUT [optional]")); 416 printf (" %s\n", _("Ignore all or (if specified) first n lines on STDOUT [optional]"));
409 printf (" %s\n", "-E, --skip-stderr[=n]"); 417 printf (" %s\n", "-E, --skip-stderr[=n]");
410 printf (" %s\n", _("Ignore all or (if specified) first n lines on STDERR [optional]")); 418 printf (" %s\n", _("Ignore all or (if specified) first n lines on STDERR [optional]"));
419 printf (" %s\n", "-W, --warn-on-stderr]");
420 printf (" %s\n", _("Exit with an warning, if there is an output on STDERR"));
411 printf (" %s\n", "-f"); 421 printf (" %s\n", "-f");
412 printf (" %s\n", _("tells ssh to fork rather than create a tty [optional]. This will always return OK if ssh is executed")); 422 printf (" %s\n", _("tells ssh to fork rather than create a tty [optional]. This will always return OK if ssh is executed"));
413 printf (" %s\n","-C, --command='COMMAND STRING'"); 423 printf (" %s\n","-C, --command='COMMAND STRING'");
@@ -460,7 +470,7 @@ print_usage (void)
460{ 470{
461 printf ("%s\n", _("Usage:")); 471 printf ("%s\n", _("Usage:"));
462 printf (" %s -H <host> -C <command> [-fqv] [-1|-2] [-4|-6]\n" 472 printf (" %s -H <host> -C <command> [-fqv] [-1|-2] [-4|-6]\n"
463 " [-S [lines]] [-E [lines]] [-t timeout] [-i identity]\n" 473 " [-S [lines]] [-E [lines]] [-W] [-t timeout] [-i identity]\n"
464 " [-l user] [-n name] [-s servicelist] [-O outputfile]\n" 474 " [-l user] [-n name] [-s servicelist] [-O outputfile]\n"
465 " [-p port] [-o ssh-option] [-F configfile]\n", 475 " [-p port] [-o ssh-option] [-F configfile]\n",
466 progname); 476 progname);