--- check_ntp.pl.dist 2006-01-16 17:56:25.835790000 +0100 +++ check_ntp.pl 2006-01-16 20:17:39.345787000 +0100 @@ -56,6 +56,12 @@ # changed ntpdc to ntpq - jitter/dispersion is in milliseconds # # Patch for for regex for stratum1 refid. +# +# Modified by Joachim Schrod , 16 Jan 06: +# Support multiple peers, don't overwrite jitter value if one was found. +# ntpdate and ntpq may exit with non-zero status, then close() returns false. +# Support FQDN hostnames with one-letter components. +# Support unknown hosts. require 5.004; use POSIX; @@ -112,7 +118,7 @@ } $opt_H = shift unless ($opt_H); -my $host = $1 if ($opt_H && $opt_H =~ m/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+|[a-zA-Z][-a-zA-Z0-9]+(\.[a-zA-Z][-a-zA-Z0-9]+)*)$/); +my $host = $1 if ($opt_H && $opt_H =~ m/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+|[a-zA-Z][-a-zA-Z0-9]*(\.[a-zA-Z][-a-zA-Z0-9]*)*)$/); unless ($host) { print "No target host specified\n"; print_usage(); @@ -242,11 +248,15 @@ } } + if (/can\'t find host/) { + $ntpdate_error = $ERRORS{"CRITICAL"}; + $msg = "Host not found - "; + } + } $out =~ s/\n//g; -close (NTPDATE) || - die $! ? "$out - Error closing $ntpdate pipe: $!" - : "$out - Exit status: $? from $ntpdate\n"; +close (NTPDATE) or + $! and die "$out - Error closing $ntpdate pipe: $!\n"; # declare an error if we also get a non-zero return code from ntpdate # unless already set to critical @@ -314,13 +324,11 @@ } } else { print "No match!\n" if $verbose; - $jitter = '(not parsed)'; } } - close NTPQ || - die $! ? "Error closing $ntpq pipe: $!" - : "Exit status: $? from $ntpq\n"; + close NTPQ or + $! and die "Error closing $ntpq pipe: $!\n"; # if we did not match sys.peer or pps.peer but matched # candidates only # generate a warning @@ -428,7 +436,14 @@ foreach my $key (keys %ERRORS) { if ($state==$ERRORS{$key}) { # print ("NTP $key: $answer"); - print ("NTP $key: $answer|offset=$offset, jitter=" . $jitter/1000 . ",peer_stratum=$stratum\n"); + defined($offset) or $offset = '-'; + defined($stratum) or $stratum = '-'; + if (defined($jitter)) { + $jitter /= 1000; + } else { + $jitter = '-'; + } + print ("NTP $key: $answer|offset=$offset, jitter=$jitter, peer_stratum=$stratum\n"); last; } }