mirror of
https://github.com/monitoring-plugins/monitoring-plugins.git
synced 2026-05-28 04:35:40 -04:00
check_mailq: Add sudo support
This addition is based on a patch contributed by Christopher Schultz. Closes #1099. Closes #1171.
This commit is contained in:
parent
04e0a182ae
commit
8235fd0aef
5 changed files with 35 additions and 8 deletions
1
NEWS
1
NEWS
|
|
@ -7,6 +7,7 @@ This file documents the major additions and syntax changes between releases.
|
|||
New check_snmp "-N" option to specify SNMPv3 context name
|
||||
New check_nt "-l" parameters: seconds|minutes|hours|days
|
||||
Make sure check_disk won't hang on hanging (network) file systems
|
||||
New check_mailq -s option which tells the plugin to use sudo(8)
|
||||
|
||||
FIXES
|
||||
Let check_real terminate lines with CRLF when talking to the server, as
|
||||
|
|
|
|||
|
|
@ -334,3 +334,4 @@ Simon Meggle
|
|||
Jonas Genannt
|
||||
Nick Peelman
|
||||
Sebastian Herbszt
|
||||
Christopher Schultz
|
||||
|
|
|
|||
10
configure.ac
10
configure.ac
|
|
@ -1484,6 +1484,16 @@ else
|
|||
AC_MSG_WARN([Get ssh in order to make check_by_ssh plugin])
|
||||
fi
|
||||
|
||||
AC_PATH_PROG(PATH_TO_SUDO,sudo)
|
||||
AC_ARG_WITH(sudo_command,
|
||||
ACX_HELP_STRING([--with-sudo-command=PATH],
|
||||
[sets path to sudo]), PATH_TO_SUDO=$withval)
|
||||
if test -n "$PATH_TO_SUDO"
|
||||
then
|
||||
AC_DEFINE_UNQUOTED(PATH_TO_SUDO,"$PATH_TO_SUDO",[path to sudo])
|
||||
else
|
||||
AC_MSG_WARN([Could not find sudo or eqivalent])
|
||||
fi
|
||||
|
||||
AC_PATH_PROG(PATH_TO_MAILQ,mailq)
|
||||
AC_ARG_WITH(mailq_command,
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@
|
|||
use POSIX;
|
||||
use strict;
|
||||
use Getopt::Long;
|
||||
use vars qw($opt_V $opt_h $opt_v $verbose $PROGNAME $opt_w $opt_c $opt_t
|
||||
use vars qw($opt_V $opt_h $opt_v $verbose $PROGNAME $opt_w $opt_c $opt_t $opt_s
|
||||
$opt_M $mailq $status $state $msg $msg_q $msg_p $opt_W $opt_C $mailq @lines
|
||||
%srcdomains %dstdomains);
|
||||
use FindBin;
|
||||
|
|
@ -36,6 +36,7 @@ use lib "$FindBin::Bin";
|
|||
use lib '@libexecdir@';
|
||||
use utils qw(%ERRORS &print_revision &support &usage );
|
||||
|
||||
my ($sudo);
|
||||
|
||||
sub print_help ();
|
||||
sub print_usage ();
|
||||
|
|
@ -57,6 +58,17 @@ if ($status){
|
|||
exit $ERRORS{"UNKNOWN"};
|
||||
}
|
||||
|
||||
if ($opt_s) {
|
||||
if (defined $utils::PATH_TO_SUDO && -x $utils::PATH_TO_SUDO) {
|
||||
$sudo = $utils::PATH_TO_SUDO;
|
||||
} else {
|
||||
print "ERROR: Cannot execute sudo\n";
|
||||
exit $ERRORS{'UNKNOWN'};
|
||||
}
|
||||
} else {
|
||||
$sudo = "";
|
||||
}
|
||||
|
||||
$SIG{'ALRM'} = sub {
|
||||
print ("ERROR: timed out waiting for $utils::PATH_TO_MAILQ \n");
|
||||
exit $ERRORS{"WARNING"};
|
||||
|
|
@ -69,7 +81,7 @@ if ($mailq eq "sendmail") {
|
|||
|
||||
## open mailq
|
||||
if ( defined $utils::PATH_TO_MAILQ && -x $utils::PATH_TO_MAILQ ) {
|
||||
if (! open (MAILQ, "$utils::PATH_TO_MAILQ | " ) ) {
|
||||
if (! open (MAILQ, "$sudo $utils::PATH_TO_MAILQ | " ) ) {
|
||||
print "ERROR: could not open $utils::PATH_TO_MAILQ \n";
|
||||
exit $ERRORS{'UNKNOWN'};
|
||||
}
|
||||
|
|
@ -298,7 +310,7 @@ elsif ( $mailq eq "postfix" ) {
|
|||
|
||||
## open mailq
|
||||
if ( defined $utils::PATH_TO_MAILQ && -x $utils::PATH_TO_MAILQ ) {
|
||||
if (! open (MAILQ, "$utils::PATH_TO_MAILQ | " ) ) {
|
||||
if (! open (MAILQ, "$sudo $utils::PATH_TO_MAILQ | " ) ) {
|
||||
print "ERROR: could not open $utils::PATH_TO_MAILQ \n";
|
||||
exit $ERRORS{'UNKNOWN'};
|
||||
}
|
||||
|
|
@ -380,7 +392,7 @@ elsif ( $mailq eq "qmail" ) {
|
|||
|
||||
# open qmail-qstat
|
||||
if ( defined $utils::PATH_TO_QMAIL_QSTAT && -x $utils::PATH_TO_QMAIL_QSTAT ) {
|
||||
if (! open (MAILQ, "$utils::PATH_TO_QMAIL_QSTAT | " ) ) {
|
||||
if (! open (MAILQ, "$sudo $utils::PATH_TO_QMAIL_QSTAT | " ) ) {
|
||||
print "ERROR: could not open $utils::PATH_TO_QMAIL_QSTAT \n";
|
||||
exit $ERRORS{'UNKNOWN'};
|
||||
}
|
||||
|
|
@ -462,7 +474,7 @@ elsif ( $mailq eq "qmail" ) {
|
|||
elsif ( $mailq eq "exim" ) {
|
||||
## open mailq
|
||||
if ( defined $utils::PATH_TO_MAILQ && -x $utils::PATH_TO_MAILQ ) {
|
||||
if (! open (MAILQ, "$utils::PATH_TO_MAILQ | " ) ) {
|
||||
if (! open (MAILQ, "$sudo $utils::PATH_TO_MAILQ | " ) ) {
|
||||
print "ERROR: could not open $utils::PATH_TO_MAILQ \n";
|
||||
exit $ERRORS{'UNKNOWN'};
|
||||
}
|
||||
|
|
@ -505,7 +517,7 @@ elsif ( $mailq eq "exim" ) {
|
|||
elsif ( $mailq eq "nullmailer" ) {
|
||||
## open mailq
|
||||
if ( defined $utils::PATH_TO_MAILQ && -x $utils::PATH_TO_MAILQ ) {
|
||||
if (! open (MAILQ, "$utils::PATH_TO_MAILQ | " ) ) {
|
||||
if (! open (MAILQ, "$sudo $utils::PATH_TO_MAILQ | " ) ) {
|
||||
print "ERROR: could not open $utils::PATH_TO_MAILQ \n";
|
||||
exit $ERRORS{'UNKNOWN'};
|
||||
}
|
||||
|
|
@ -556,7 +568,8 @@ sub process_arguments(){
|
|||
"M:s" => \$opt_M, "mailserver:s" => \$opt_M, # mailserver (default sendmail)
|
||||
"w=i" => \$opt_w, "warning=i" => \$opt_w, # warning if above this number
|
||||
"c=i" => \$opt_c, "critical=i" => \$opt_c, # critical if above this number
|
||||
"t=i" => \$opt_t, "timeout=i" => \$opt_t
|
||||
"t=i" => \$opt_t, "timeout=i" => \$opt_t,
|
||||
"s" => \$opt_s, "sudo" => \$opt_s
|
||||
);
|
||||
|
||||
if ($opt_V) {
|
||||
|
|
@ -637,7 +650,7 @@ sub process_arguments(){
|
|||
}
|
||||
|
||||
sub print_usage () {
|
||||
print "Usage: $PROGNAME -w <warn> -c <crit> [-W <warn>] [-C <crit>] [-M <MTA>] [-t <timeout>] [-v verbose]\n";
|
||||
print "Usage: $PROGNAME -w <warn> -c <crit> [-W <warn>] [-C <crit>] [-M <MTA>] [-t <timeout>] [-s] [-v]\n";
|
||||
}
|
||||
|
||||
sub print_help () {
|
||||
|
|
@ -654,6 +667,7 @@ sub print_help () {
|
|||
print "-C (--Critical) = Min. number of messages for same domain in queue to generate critical alert ( W < C )\n";
|
||||
print "-t (--timeout) = Plugin timeout in seconds (default = $utils::TIMEOUT)\n";
|
||||
print "-M (--mailserver) = [ sendmail | qmail | postfix | exim | nullmailer ] (default = autodetect)\n";
|
||||
print "-s (--sudo) = Use sudo to call the mailq command\n";
|
||||
print "-h (--help)\n";
|
||||
print "-V (--version)\n";
|
||||
print "-v (--verbose) = debugging output\n";
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ sub support();
|
|||
sub is_hostname;
|
||||
|
||||
## updated by autoconf
|
||||
$PATH_TO_SUDO = "@PATH_TO_SUDO@";
|
||||
$PATH_TO_RPCINFO = "@PATH_TO_RPCINFO@" ;
|
||||
$PATH_TO_LMSTAT = "@PATH_TO_LMSTAT@" ;
|
||||
$PATH_TO_SMBCLIENT = "@PATH_TO_SMBCLIENT@" ;
|
||||
|
|
|
|||
Loading…
Reference in a new issue