X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fcheck_by_ssh.c;h=b688d4350ca3ae040e79d47c5645f270363f23c7;hb=25d1ee331dbe4977a4a1a756c67f32bd51d9b070;hp=05c348487717fe0a1a3e734cff9536d8bc5c3a58;hpb=b52e63da65ac5db7affbd09e110904855f3b1ed7;p=nagiosplug.git diff --git a/plugins/check_by_ssh.c b/plugins/check_by_ssh.c index 05c3484..b688d43 100644 --- a/plugins/check_by_ssh.c +++ b/plugins/check_by_ssh.c @@ -5,8 +5,6 @@ * License: GPL * Copyright (c) 2000-2008 Nagios Plugins Development Team * -* Last Modified: $Date$ -* * Description: * * This file contains the check_by_ssh plugin @@ -25,22 +23,25 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . * -* $Id$ * *****************************************************************************/ const char *progname = "check_by_ssh"; -const char *revision = "$Revision$"; const char *copyright = "2000-2008"; const char *email = "nagiosplug-devel@lists.sourceforge.net"; #include "common.h" -#include "netutils.h" #include "utils.h" -#include "runcmd.h" +#include "netutils.h" +#include "utils_cmd.h" + +#ifndef NP_MAXARGS +#define NP_MAXARGS 1024 +#endif int process_arguments (int, char **); int validate_arguments (void); +void comm_append (const char *); void print_help (void); void print_usage (void); @@ -49,7 +50,8 @@ unsigned int services = 0; int skip_stdout = 0; int skip_stderr = 0; char *remotecmd = NULL; -char *comm = NULL; +char **commargv = NULL; +int commargc = 0; char *hostname = NULL; char *outputfile = NULL; char *host_shortname = NULL; @@ -67,10 +69,10 @@ main (int argc, char **argv) int i; time_t local_time; FILE *fp = NULL; - struct output chld_out, chld_err; + output chld_out, chld_err; remotecmd = ""; - comm = strdup (SSH_COMMAND); + comm_append(SSH_COMMAND); setlocale (LC_ALL, ""); bindtextdomain (PACKAGE, LOCALEDIR); @@ -84,16 +86,19 @@ main (int argc, char **argv) usage_va(_("Could not parse arguments")); /* Set signal handling and alarm timeout */ - if (signal (SIGALRM, popen_timeout_alarm_handler) == SIG_ERR) { + if (signal (SIGALRM, timeout_alarm_handler) == SIG_ERR) { usage_va(_("Cannot catch SIGALRM")); } alarm (timeout_interval); /* run the command */ - if (verbose) - printf ("%s\n", comm); + if (verbose) { + printf ("Command: %s\n", commargv[0]); + for (i=1; i NP_MAXARGS) + die(STATE_UNKNOWN, _("%s: Argument limit of %d exceeded\n"), progname, NP_MAXARGS); + + if ((commargv = (char **)realloc(commargv, (commargc+1) * sizeof(char *))) == NULL) + die(STATE_UNKNOWN, _("Can not (re)allocate 'commargv' buffer\n")); + + commargv[commargc-1] = strdup(str); + commargv[commargc] = NULL; + +} int validate_arguments (void) @@ -339,7 +375,7 @@ validate_arguments (void) void print_help (void) { - print_revision (progname, revision); + print_revision (progname, NP_VERSION); printf ("Copyright (c) 1999 Karl DeBisschop \n"); printf (COPYRIGHT, copyright, email); @@ -350,13 +386,13 @@ print_help (void) print_usage (); - printf (_(UT_HELP_VRSN)); + printf (UT_HELP_VRSN); - printf (_(UT_EXTRA_OPTS)); + printf (UT_EXTRA_OPTS); - printf (_(UT_HOST_PORT), 'p', "none"); + printf (UT_HOST_PORT, 'p', "none"); - printf (_(UT_IPv46)); + printf (UT_IPv46); printf (" %s\n", "-1, --proto1"); printf (" %s\n", _("tell ssh to use Protocol 1 [optional]")); @@ -367,7 +403,7 @@ print_help (void) printf (" %s\n", "-E, --skip-stderr[=n]"); printf (" %s\n", _("Ignore all or (if specified) first n lines on STDERR [optional]")); printf (" %s\n", "-f"); - printf (" %s\n", _("tells ssh to fork rather than create a tty [optional]")); + printf (" %s\n", _("tells ssh to fork rather than create a tty [optional]. This will always return OK if ssh is executed")); printf (" %s\n","-C, --command='COMMAND STRING'"); printf (" %s\n", _("command to execute on the remote machine")); printf (" %s\n","-l, --logname=USERNAME"); @@ -384,9 +420,9 @@ print_help (void) printf (" %s\n", _("Call ssh with '-o OPTION' (may be used multiple times) [optional]")); printf (" %s\n","-q, --quiet"); printf (" %s\n", _("Tell ssh to suppress warning and diagnostic messages [optional]")); - printf (_(UT_WARN_CRIT)); - printf (_(UT_TIMEOUT), DEFAULT_SOCKET_TIMEOUT); - printf (_(UT_VERBOSE)); + printf (UT_WARN_CRIT); + printf (UT_TIMEOUT, DEFAULT_SOCKET_TIMEOUT); + printf (UT_VERBOSE); printf("\n"); printf (" %s\n", _("The most common mode of use is to refer to a local identity file with")); printf (" %s\n", _("the '-i' option. In this mode, the identity pair should have a null")); @@ -409,10 +445,10 @@ print_help (void) #ifdef NP_EXTRA_OPTS printf("\n"); printf("%s\n", _("Notes:")); - printf(_(UT_EXTRA_OPTS_NOTES)); + printf(UT_EXTRA_OPTS_NOTES); #endif - printf(_(UT_SUPPORT)); + printf(UT_SUPPORT); }