From 703ae01d5f2ea4efb01d000c852a5078b0c9e145 Mon Sep 17 00:00:00 2001 From: Holger Weiss Date: Sat, 14 Apr 2007 03:09:39 +0000 Subject: Up to revision 1.35, the "-S" option skipped the specified number of lines written to stderr. With revision 1.36 and newer, "-S" skipped the specified number of lines written to stdout. Now, "-S" skips the specified number of lines written to stderr; and if the number specified via "-S" minus the number of lines written to stderr is larger than 0, the difference is used as the number of lines written to stdout to skip. Also, the "--help" output was fixed. (Hector - 1675286) git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1685 f882894a-f735-0410-b71e-b25c423dba1c diff --git a/BUGS b/BUGS index 4465d25..bbcc3cd 100644 --- a/BUGS +++ b/BUGS @@ -6,7 +6,6 @@ For the 1.4.8 release: 1687867 - check_http: buffer overflow vulnerability 1675306 - check_dhcp: does not add mandatory 'end' option -1675286 - check_ssh: -S flag not working 1652471 - check_http: missing Accept header 1648570 - check_dhcp error by asking 2 dhcp servers 1637767 - check_ping on FreeBSD 5.4 fails diff --git a/plugins/check_by_ssh.c b/plugins/check_by_ssh.c index 1675071..65eee3c 100644 --- a/plugins/check_by_ssh.c +++ b/plugins/check_by_ssh.c @@ -46,9 +46,9 @@ int validate_arguments (void); void print_help (void); void print_usage (void); -int commands = 0; -int services = 0; -int skip = 0; +unsigned int commands = 0; +unsigned int services = 0; +unsigned int skip = 0; char *remotecmd = NULL; char *comm = NULL; char *hostname = NULL; @@ -92,12 +92,13 @@ main (int argc, char **argv) printf ("%s\n", comm); result = np_runcmd(comm, &chld_out, &chld_err, 0); - /* UNKNOWN if output found on stderr */ - if(chld_err.buflen) { + /* UNKNOWN if (non-skipped) output found on stderr */ + if((signed)chld_err.lines - (signed)skip > 0) { printf(_("Remote command execution failed: %s\n"), - chld_err.buflen ? chld_err.buf : _("Unknown error")); + skip < chld_err.lines ? chld_err.line[skip] : chld_err.buf); return STATE_UNKNOWN; } + skip -= chld_err.lines; /* this is simple if we're not supposed to be passive. * Wrap up quickly and keep the tricks below */ @@ -336,7 +337,7 @@ print_help (void) printf (" %s\n", _("tell ssh to use Protocol 1")); printf (" %s\n", "-2, --proto2"); printf (" %s\n", _("tell ssh to use Protocol 2")); - printf (" %s\n", "-S, --skiplines=n"); + printf (" %s\n", "-S, --skip=n"); printf (" %s\n", _("Ignore first n lines on STDERR (to suppress a logon banner)")); printf (" %s\n", "-f"); printf (" %s\n", _("tells ssh to fork rather than create a tty")); @@ -383,6 +384,8 @@ void print_usage (void) { printf (_("Usage:")); - printf(" %s [-fq46] [-t timeout] [-i identity] [-l user] -H -C ",progname); - printf(" [-n name] [-s servicelist] [-O outputfile] [-p port] [-o ssh-option]\n"); + printf (" %s -H -C [-fq] [-1|-2] [-4|-6]\n" + " [-S lines] [-t timeout] [-i identity] [-l user] [-n name]\n" + " [-s servicelist] [-O outputfile] [-p port] [-o ssh-option]\n", + progname); } -- cgit v0.10-9-g596f