[Nagiosplug-devel] patch for check_by_ssh passive mode

mike mike at primaledge.ca
Wed Jan 9 02:02:42 CET 2008


last one, I promise.  using it now in prod and it's working great.  ok i'm
gone (btw i'm not on this list, send comments, hate mail etc to me directly)

--- check_by_ssh.c.orig 2007-09-23 05:26:03.000000000 -0700
+++ check_by_ssh.c      2008-01-08 13:39:49.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 (i > 0 && strstr (chld_out.line[i-1], "STATUS
CODE: ") == 0) fprintf (fp, "%s\n", chld_out.line[i-1]);
+                       else fprintf (fp, "%s - Remote command exit status
%d\n",
+                                        state_text(cresult), cresult);
                }
        }

@@ -307,7 +305,7 @@ process_arguments (int argc, char **argv
                                asprintf (&remotecmd, "%s", argv[c]);
        }

-       if (commands > 1)
+       if (passive)
                asprintf (&remotecmd, "%s;echo STATUS CODE: $?;",
remotecmd);

        if (remotecmd == NULL || strlen (remotecmd) <= 1)



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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.monitoring-plugins.org/archive/devel/attachments/20080108/9109a592/attachment.html>


More information about the Devel mailing list