summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSven Nierlein <sven@nierlein.de>2017-03-10 18:37:23 (GMT)
committerSven Nierlein <sven@nierlein.de>2017-03-12 21:55:52 (GMT)
commit3b962208e790e859ce68346379020ca92251c0a2 (patch)
tree61adacfcc914f7c8a1ada310dad630b79445cd7a
parentb3dee5c4bf9909c44a43dea0d27475cdbf79f243 (diff)
downloadmonitoring-plugins-3b96220.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>
-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 9899226..28c49e8 100755
--- a/plugins-scripts/check_disk_smb.pl
+++ b/plugins-scripts/check_disk_smb.pl
@@ -19,7 +19,7 @@
19# 19#
20 20
21require 5.004; 21require 5.004;
22use POSIX; 22use POSIX qw(setsid);
23use strict; 23use strict;
24use Getopt::Long; 24use Getopt::Long;
25use 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); 25use 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;
28use lib "$FindBin::Bin"; 28use lib "$FindBin::Bin";
29use utils qw($TIMEOUT %ERRORS &print_revision &support &usage); 29use utils qw($TIMEOUT %ERRORS &print_revision &support &usage);
30 30
31# make us session leader which makes all childs exit if we do
32setsid;
33
31sub print_help (); 34sub print_help ();
32sub print_usage (); 35sub print_usage ();
33 36
@@ -175,6 +178,8 @@ my @lines = undef;
175# Just in case of problems, let's not hang the monitoring system 178# Just in case of problems, let's not hang the monitoring system
176$SIG{'ALRM'} = sub { 179$SIG{'ALRM'} = sub {
177 print "No Answer from Client\n"; 180 print "No Answer from Client\n";
181 $SIG{'INT'} = 'IGNORE';
182 kill(-2, $$);
178 exit $ERRORS{"UNKNOWN"}; 183 exit $ERRORS{"UNKNOWN"};
179}; 184};
180alarm($TIMEOUT); 185alarm($TIMEOUT);