aboutsummaryrefslogtreecommitdiff
path: root/plugins-scripts
diff options
context:
space:
mode:
authorGravatar Sven Nierlein <sven@nierlein.de> 2017-03-10 19:37:23 +0100
committerGravatar Sven Nierlein <sven@nierlein.de> 2017-03-12 22:55:52 +0100
commit3b962208e790e859ce68346379020ca92251c0a2 (patch)
tree61adacfcc914f7c8a1ada310dad630b79445cd7a /plugins-scripts
parentb3dee5c4bf9909c44a43dea0d27475cdbf79f243 (diff)
downloadmonitoring-plugins-3b962208e790e859ce68346379020ca92251c0a2.tar.gz
fix timeout issue with check_disk_smb
check_disk_smb hangs if the smbclient is still running. So send a sigint to all childs and exit cleanly. Signed-off-by: Sven Nierlein <sven@nierlein.de>
Diffstat (limited to 'plugins-scripts')
-rwxr-xr-xplugins-scripts/check_disk_smb.pl7
1 files changed, 6 insertions, 1 deletions
diff --git a/plugins-scripts/check_disk_smb.pl b/plugins-scripts/check_disk_smb.pl
index 98992268..28c49e84 100755
--- a/plugins-scripts/check_disk_smb.pl
+++ b/plugins-scripts/check_disk_smb.pl
@@ -19,7 +19,7 @@
#
require 5.004;
-use POSIX;
+use POSIX qw(setsid);
use strict;
use Getopt::Long;
use vars qw($opt_P $opt_V $opt_h $opt_H $opt_s $opt_W $opt_u $opt_p $opt_w $opt_c $opt_a $verbose);
@@ -28,6 +28,9 @@ use FindBin;
use lib "$FindBin::Bin";
use utils qw($TIMEOUT %ERRORS &print_revision &support &usage);
+# make us session leader which makes all childs exit if we do
+setsid;
+
sub print_help ();
sub print_usage ();
@@ -175,6 +178,8 @@ my @lines = undef;
# Just in case of problems, let's not hang the monitoring system
$SIG{'ALRM'} = sub {
print "No Answer from Client\n";
+ $SIG{'INT'} = 'IGNORE';
+ kill(-2, $$);
exit $ERRORS{"UNKNOWN"};
};
alarm($TIMEOUT);