[Nagiosplug-devel] patch for check_by_ssh passive mode
mike
mike at primaledge.ca
Tue Jan 8 19:20:33 CET 2008
Here's a corrected patch after testing in a live environment ;)
--- check_by_ssh.c.orig 2007-09-23 05:26:03.000000000 -0700
+++ check_by_ssh.c 2008-01-08 10:20:01.000000000 -0800
@@ -100,7 +100,7 @@ main (int argc, char **argv)
skip_stderr = chld_err.lines;
/* UNKNOWN if (non-skipped) output found on stderr */
- if(chld_err.lines > skip_stderr) {
+ if(!passive && chld_err.lines > skip_stderr) {
printf (_("Remote command execution failed: %s\n"),
chld_err.line[skip_stderr]);
return STATE_UNKNOWN;
@@ -133,16 +133,16 @@ main (int argc, char **argv)
commands = 0;
for(i = skip_stdout; i < chld_out.lines; i++) {
status_text = strstr (chld_out.line[i], "STATUS CODE: ");
- if (status_text == NULL) {
- printf ("%s", chld_out.line[i]);
- return result;
- }
if (service[commands] && status_text
&& sscanf (status_text, "STATUS CODE: %d", &cresult)
== 1)
{
- fprintf (fp, "[%d]
PROCESS_SERVICE_CHECK_RESULT;%s;%s;%d;%s\n",
- (int) local_time, host_shortname,
service[commands++],
- cresult, chld_out.line[i]);
+ fprintf (fp, "[%d]
PROCESS_SERVICE_CHECK_RESULT;%s;%s;%d;",
+ (int) local_time, host_shortname,
service[commands++], cresult);
+ if (strstr (chld_out.line[i-1], "STATUS CODE: ") ==
0) fprintf (fp, "%s", chld_out.line[i-1]);
+ if (cresult != 0)
+ fprintf (fp, "%s - Remote command exit
status %d\n",
+ state_text(cresult), cresult);
+ else fprintf (fp, "\n");
}
}
On 1/7/08, mike <mike at primaledge.ca> wrote:
>
> The current one doesn't really work. It basically did nothing if there
> was a \n anywhere in the command output (most commands return a \n at the
> end :) This makes it better by writing the last output line (up to the \n)
> in the log, and doesn't abort if one of the commands has an error. Still
> isn't perfect but it's usable.
> Enjoy,
> Mike
>
>
> --- check_by_ssh.c.orig 2007-09-23 05:26:03.000000000 -0700
> +++ check_by_ssh.c 2008-01-07 14:59:42.000000000 -0800
> @@ -100,7 +100,7 @@ main (int argc, char **argv)
> skip_stderr = chld_err.lines;
>
> /* UNKNOWN if (non-skipped) output found on stderr */
> - if(chld_err.lines > skip_stderr) {
> + if(!passive && chld_err.lines > skip_stderr) {
> printf (_("Remote command execution failed: %s\n"),
> chld_err.line[skip_stderr]);
> return STATE_UNKNOWN;
> @@ -133,16 +133,14 @@ main (int argc, char **argv)
> commands = 0;
> for(i = skip_stdout; i < chld_out.lines; i++) {
> status_text = strstr (chld_out.line[i], "STATUS CODE: ");
> - if (status_text == NULL) {
> - printf ("%s", chld_out.line[i]);
> - return result;
> - }
> if (service[commands] && status_text
> && sscanf (status_text, "STATUS CODE: %d",
> &cresult) == 1)
> {
> - fprintf (fp, "[%d]
> PROCESS_SERVICE_CHECK_RESULT;%s;%s;%d;%s\n",
> - (int) local_time, host_shortname,
> service[commands++],
> - cresult, chld_out.line[i]);
> + fprintf (fp, "[%d]
> PROCESS_SERVICE_CHECK_RESULT;%s;%s;%d;",
> + (int) local_time, host_shortname,
> service[commands++], cresult);
> + if (cresult == 0) fprintf (fp, "%s\n",
> chld_out.line[i-1]);
> + else if(chld_err.lines > skip_stderr)
> + fprintf (fp, "%s\n",
> chld_err.line[skip_stderr]);
> }
> }
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.monitoring-plugins.org/archive/devel/attachments/20080108/46688480/attachment.html>
More information about the Devel
mailing list