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);
}