From e5b45d0e143bd3dbfb870cbe9fd33977db1a2b19 Mon Sep 17 00:00:00 2001 From: Harper Mann Date: Wed, 30 Nov 2005 00:49:47 +0000 Subject: Nagiosplug bug # 1251096 check_ntp wasn't properly handing a bad exit status from the external programs it calls (ntpdate and ntpq), so jitter wasn't set. Added check of $? on close and proper error output if status from the sub program call completion is non-zero. This includes "host not found". git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1291 f882894a-f735-0410-b71e-b25c423dba1c diff --git a/plugins-scripts/check_ntp.pl b/plugins-scripts/check_ntp.pl index e844327..d4175f6 100755 --- a/plugins-scripts/check_ntp.pl +++ b/plugins-scripts/check_ntp.pl @@ -1,5 +1,5 @@ #!/usr/bin/perl -w - +# # (c)1999 Ian Cass, Knowledge Matters Ltd. # Read the GNU copyright stuff for all the legalese # @@ -200,13 +200,15 @@ elsif ($ipv6) { ### if (!open (NTPDATE, $ntpdate . " -q $host 2>&1 |")) { - print "Could not open ntpdate\n"; + print "Could not open $ntpdate: $!\n"; exit $ERRORS{"UNKNOWN"}; } +my $out; while () { #print if ($verbose); # noop $msg = $_ unless ($msg); + $out .= "$_ "; if (/stratum\s(\d+)/) { $stratum = $1; @@ -241,8 +243,11 @@ while () { } } +$out =~ s/\n//g; +close (NTPDATE) || + die $! ? "$out - Error closing $ntpdate pipe: $!" + : "$out - Exit status: $? from $ntpdate\n"; -close (NTPDATE); # declare an error if we also get a non-zero return code from ntpdate # unless already set to critical if ( $? && !$ignoreret ) { @@ -313,7 +318,9 @@ if ($have_ntpq) { } } - close NTPQ; + close NTPQ || + die $! ? "Error closing $ntpq pipe: $!" + : "Exit status: $? from $ntpq\n"; # if we did not match sys.peer or pps.peer but matched # candidates only # generate a warning -- cgit v0.10-9-g596f