From e5b45d0e143bd3dbfb870cbe9fd33977db1a2b19 Mon Sep 17 00:00:00 2001
From: Harper Mann <harpermann@users.sourceforge.net>
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 (<NTPDATE>) {
 	#print if ($verbose);  # noop
 	$msg = $_ unless ($msg);
+	$out .= "$_ ";
 	
 	if (/stratum\s(\d+)/) {
 		$stratum = $1;
@@ -241,8 +243,11 @@ while (<NTPDATE>) {
 	}
 
 }
+$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

