Commit graph

84 commits

Author SHA1 Message Date
Alvar Penning
6ce11bc44f
lib/utils_cmd: Rename stdout, stderr in cmd_run_result
On OpenBSD's "stdio.h", stdin, stdout, and stderr are not directly
FILE*, but #defines. Thus, naming the output struct fields stdout and
stderr resulted in compiler errors, after replacing the #define.

a762189c5e/include/stdio.h (L75-L77)
2025-12-11 21:05:49 +01:00
Lorenz Kästle
c3d931fa1a check_by_ssh: some formatting 2025-11-16 15:27:58 +01:00
Lorenz Kästle
62242ddcf5 check_by_ssh: do not incorrectly assume that ssh (1) succeeded 2025-11-16 15:27:19 +01:00
Lorenz Kästle
463223790c check_by_ssh: handle errrors of ssh (1) directly 2025-11-16 14:52:07 +01:00
Lorenz Kästle
e77ce530c4 check_by_ssh: Implement modern output functionality 2025-11-16 14:36:10 +01:00
Alvar Penning
4b3f684d33
check_by_ssh: Ignore output on stderr by default
check_by_ssh no longer returns UNKNOWN if ssh(1) returns data on stderr.
But it can be enforced again by the new "--unknown-on-stderr" option.

---

The default logic of check_by_ssh results in an UNKNOWN state if the
ssh(1) process produces output on stderr. Using the "--skip-stderr=[n]"
option allows ignoring a certain amount of lines or disabling this check
altogether. Furthermore, passing the "--warn-on-stderr" option reduces
the exit code to WARNING.

The "--help" output does not document this behavior, only states that
"--warn-on-stderr" will result in the WARNING, but does not mention the
UNKNOWN by default.

The man page of ssh(1) mentions that debug information is logged to
stderr. This conflicts with the described logic, resulting in
check_by_ssh to go UNKNOWN, unless additional options are set.

Starting with OpenSSH version 10.1, ssh(1) will report warnings to
stderr if the opposite server does not support post-quantum
cryptography, <https://www.openssh.com/pq.html>.

This change, slowly being rolled out throughout the next months/years,
might result in mass-breakages of check_by_ssh.

By introducing a new "--unknown-on-stderr" option, enforcing the prior
default logic of an UNKNOWN state for data on stderr, and ignoring
output on stderr by default, check_by_ssh will continue to work. One
might even argue that this change converges actual implementation and
the documented behavior, as argued above.

---

$ ssh example '/usr/lib/nagios/plugins/check_dummy 0 demo'
** WARNING: connection is not using a post-quantum key exchange algorithm.
** This session may be vulnerable to "store now, decrypt later" attacks.
** The server may need to be upgraded. See https://openssh.com/pq.html
OK: demo

$ echo $?
0

$ ./check_by_ssh -H example -C '/usr/lib/nagios/plugins/check_dummy 0 demo'
OK: demo

$ echo $?
0

$ ./check_by_ssh -H example -C '/usr/lib/nagios/plugins/check_dummy 0 demo' --warn-on-stderr
Remote command execution failed: ** WARNING: connection is not using a post-quantum key exchange algorithm.

$ echo $?
1

$ ./check_by_ssh -H example -C '/usr/lib/nagios/plugins/check_dummy 0 demo' --unknown-on-stderr
Remote command execution failed: ** WARNING: connection is not using a post-quantum key exchange algorithm.

$ echo $?
3

---

Fixes #2147.
2025-09-15 22:20:08 +02:00
Lorenz Kästle
802e46f8ea Run clang-format again 2025-09-15 12:59:37 +02:00
Lorenz Kästle
bd3ec036c7 Refactor check_by_ssh 2025-03-10 15:56:34 +01:00
Lorenz Kästle
1c0b72e3ff check_by_ssh: clang-format 2025-02-24 20:32:37 +01:00
Lorenz Kästle
02adcbfa89 check_by_ssh: Remove warning/critical from help 2025-02-24 20:32:19 +01:00
RincewindsHat
060bd01d89 check_by_ssh: linter fixes 2024-10-31 02:50:34 +01:00
RincewindsHat
ba47cca3ef check_by_ssh: do not export local symbols 2024-10-31 02:45:58 +01:00
RincewindsHat
744568f1f8 check_by_ssh: Copyright update 2024-10-31 02:44:09 +01:00
RincewindsHat
9f1ec43ce1 check_by_ssh: clang-format 2024-10-31 02:43:12 +01:00
RincewindsHat
07f9c438f3 Fixes for -Wsign-compare 2023-10-19 12:10:55 +02:00
RincewindsHat
2f29f45e10 check_by_ssh: Use C99 booleans 2023-10-18 16:12:41 +02:00
Archie L. Cobbs
ccf4ed25f9
check_by_ssh: Add "-U" flag (#1123). (#1774)
This causes a 255 exit value from ssh(1), which indicates a connection failure,
to return UNKNOWN instead of CRITICAL; similar to check_nrpe's "-u" flag.
2022-07-14 08:47:54 +02:00
Lorenz
d999db01c0
Merge pull request #1301 from nafets/exit_on_stderr
check_by_ssh: added option to exit with an warning, if there is output on STDERR
2022-01-14 15:44:05 +01:00
Lorenz Kästle
6e5ee70d07 Let ssh decide if a host is valid, enables usage of ssh .config file 2021-06-25 12:12:48 +02:00
Sven Nierlein
3a12034805 check_by_ssh: print command output in verbose mode
right now it is not possible to print the command output of ssh. check_by_ssh
only prints the command itself. This patchs adds printing the output too. This
makes it possible to use ssh with verbose logging which helps debuging any
connection, key or other ssh problems.
Note: you must use -E,--skip-stderr=<high number>, otherwise check_by_ssh would
always exit with unknown state.

Example:

  ./check_by_ssh -H localhost -o LogLevel=DEBUG3 -C "sleep 1" -E 999 -v

Signed-off-by: Sven Nierlein <sven@nierlein.de>
2016-09-17 07:45:08 +02:00
Sven Nierlein
edca257e20 use unknown exit code for help/version in plugins
Signed-off-by: Sven Nierlein <sven@nierlein.de>
2015-10-04 19:24:30 +02:00
nafets
bb16b73130 added option to exit with an warning, if there is output on STDERR 2014-11-17 23:00:45 +01:00
Sven Nierlein
57fb03cea5 check_by_ssh: added --hostname support
just like the guidelines and the help already suggests.

Signed-off-by: Sven Nierlein <sven@nierlein.de>
2014-08-06 15:51:18 +02:00
Thomas Guyot-Sionnest
11cf54ca78 Merge branch 'rename' 2014-01-21 07:59:07 -05:00
Spenser Reinhardt
212575b858 plugins/*.c: Alterations for timeout messages.
.c file changes for misleading timeout messages in help functions. Solution to pull request #1209 tracker by awiddersheim.

Files: plugins/check_apt.c, plugins/check_by_ssh.c, plugins/check_dbi.c, plugins/check_dig.c, plugins/check_disk.c, plugins/check_dns.c, plugins/check_game.c, plugins/check_http.c, plugins/check_ldap.c, plugins/check_ntp.c, plugins/check_ntp_peer.c, plugins/check_ntp_time.c, plugins/check_nwstat.c, plugins/check_overcr.c, plugins/check_pgsql.c, plugins/check_ping.c, plugins/check_procs.c, plugins/check_radius.c, plugins/check_real.c, plugins/check_smtp.c, plugins/check_snmp.c, plugins/check_ssh.c, plugins/check_tcp.c, plugins/check_time.c, plugins/check_ups.c, plugins/negate.c
2014-01-21 11:33:45 +01:00
Holger Weiss
c3e756a855 Capitalize "Monitoring" when it's the first word 2014-01-20 03:12:50 +01:00
Monitoring Plugins Development Team
63734f52ab Project rename initial commit.
This is an initial take at renaming the project to Monitoring Plugins.
It's not expected to be fully complete, and it is expected to break
things (The perl module for instance). More testing will be required
before this goes mainline.
2014-01-19 14:18:47 -05:00
Anders Kaseorg
028d50d6f9 Die when asprintf fails
Fixes many instances of
warning: ignoring return value of 'asprintf', declared with attribute warn_unused_result [-Wunused-result]

Signed-off-by: Anders Kaseorg <andersk@mit.edu>
2012-06-29 13:39:11 +02:00
Sven Nierlein
83655083af check_by_ssh: added -F config file to specify alternative ssh config 2012-04-09 22:16:39 +02:00
Thomas Guyot-Sionnest
eaf3cb27f4 Add newline after "Usage:" in --help 2010-04-22 08:57:14 -04:00
Thomas Guyot-Sionnest
884aee0667 Standardize the extra-opts notes 2010-04-21 23:29:18 -04:00
Thomas Guyot-Sionnest
25d1ee331d Fix translations when extra-opts aren't enabled
Bug #2832884 reported problem with translations outputting pot file
headers. This is caused by "" matching the header of the translation
files.

This patch moves gettext macros inside utils macros and update some
french translations.
2010-04-14 08:33:06 -04:00
Thomas Guyot-Sionnest
fcc4db5aaa Fix check_by_ssh interpretation of quotes in -C parameter (#1985246, #2268675) 2009-05-26 04:28:41 -04:00
Thomas Guyot-Sionnest
6fbd14fea5 Removing CVS/SVN tags and replacing with git-based versioning
For contrib/, full tags have been imported from subversion


git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@2091 f882894a-f735-0410-b71e-b25c423dba1c
2008-11-23 05:38:47 +00:00
Ton Voon
4c6c29b001 Addition to help to state that -f will always return OK if ssh command
is executed (Alain Dewit - 1852198)


git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@2002 f882894a-f735-0410-b71e-b25c423dba1c
2008-05-27 21:31:13 +00:00
Thomas Guyot-Sionnest
b52e63da65 Fixed passive option in check_by_ssh
Also:
- On non-skipped stderr, check_by_ssh now returns UNKNOWN or worse (result from command) instead of always UNKNOWN.
- Fixed passive tests and make is always run the specified number of tests (using fail if there's nothing to test).


git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1997 f882894a-f735-0410-b71e-b25c423dba1c
2008-05-21 08:57:13 +00:00
Thomas Guyot-Sionnest
44f8455b2c Added support for --extra-opts in all C plugins (disabled by default, see configure --help)
git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1991 f882894a-f735-0410-b71e-b25c423dba1c
2008-05-07 10:02:42 +00:00
Thomas Guyot-Sionnest
ed62784a0b --help output cleanup (plus removal of spaces on blank lines)
git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1984 f882894a-f735-0410-b71e-b25c423dba1c
2008-04-27 14:35:26 +00:00
Thomas Guyot-Sionnest
fa4efcdf6d Bump plugins/ to GPLv3 (check_apt to check_nwstat)
git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1916 f882894a-f735-0410-b71e-b25c423dba1c
2008-01-30 10:53:47 +00:00
Matthias Eble
e8d6f41fad Added multiline output capability to check_by_ssh. Thanks to Matthias Flacke (#1769653)
git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1792 f882894a-f735-0410-b71e-b25c423dba1c
2007-09-23 12:26:03 +00:00
Holger Weiss
884bd1c822 Add "-v" to help/usage output.
git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1738 f882894a-f735-0410-b71e-b25c423dba1c
2007-06-12 23:18:13 +00:00
Holger Weiss
4e83bc016c Revert my previous change to "-S/--skip" in favour of the two options
"-E/--skip-stderr" and "-S/--skip-stdout".  Both of them support
omitting the number of lines to skip, in which case all output on the
respective file descriptor is skipped.  "--skip" is kept as an alias for
"--skip-stdout" for backwards compatibility with recent releases.

Also, print a message if no (non-skipped) stdout/stderr output is
available.  This fixes a segfault if the remote command prints no
output.


git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1692 f882894a-f735-0410-b71e-b25c423dba1c
2007-04-18 19:31:29 +00:00
Holger Weiss
703ae01d5f 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
2007-04-14 03:09:39 +00:00
Holger Weiss
fd329a1e91 Don't try to print `optarg' (which will be a NULL pointer) if an unknown
command line option was used, as this leads to a segfault on some
systems.  The unknown option will be printed by getopt(3) anyway.  So,
simply call print_usage() and exit UNKNOWN via the new usage5() instead.


git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1590 f882894a-f735-0410-b71e-b25c423dba1c
2007-01-28 21:46:41 +00:00
Holger Weiss
7c11e0873c Added "-o,--ssh-option=OPTION" which hands "-o OPTION" over to ssh(1) and
"-q,--quiet" which tells ssh(1) to suppress warnings (Gerhard Lausser - 1472491)


git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1574 f882894a-f735-0410-b71e-b25c423dba1c
2007-01-22 04:05:37 +00:00
Benoit Mortier
082cfc29e3 first pass at cleaning localization for new release
first pass at making all the headre be the same licence, plugin, etc...


git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1499 f882894a-f735-0410-b71e-b25c423dba1c
2006-10-19 00:25:16 +00:00
Benoit Mortier
704aa165c1 starting the BIG locale update ;-)
git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1425 f882894a-f735-0410-b71e-b25c423dba1c
2006-06-14 18:48:59 +00:00
Ton Voon
dfbd0be389 Typo (Thomas Guettler - 1433447)
git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1341 f882894a-f735-0410-b71e-b25c423dba1c
2006-03-22 13:18:06 +00:00
M. Sean Finney
ceebd58040 initial merging of ae's np_runcmd code into selected plugins.
git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1260 f882894a-f735-0410-b71e-b25c423dba1c
2005-10-24 11:10:29 +00:00
Benoit Mortier
4014207f5d internationalization of check_dhcp
internationalization fixes of check_ssh


git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1058 f882894a-f735-0410-b71e-b25c423dba1c
2004-12-25 12:09:20 +00:00