+* Fix ntpsweep to use sntp instead of ntpdate, from Oliver Kindernay.
(4.2.7p365) 2013/04/16 Released by Harlan Stenn <stenn@ntp.org>
* [Bug 2149] Log an error message if /proc/net/if_inet6 cannot be opened.
(4.2.7p364) 2013/03/26 Released by Harlan Stenn <stenn@ntp.org>
(my $program = $0) =~ s%.*/(.+?)(.pl)?$%$1%;
# Hardcoded paths/program names
-my $ntpdate = "ntpdate";
+my $sntp = "sntp";
my $ntpq = "ntpq";
# no STDOUT buffering
if (&item_in_list($host, @known_hosts)) {
$known_host = 1;
} else {
- # ntpdate part
- open(NTPDATE, "$ntpdate -bd $host 2>/dev/null |") ||
- die "Cannot open ntpdate pipe: $!\n";
- while (<NTPDATE>) {
- /^stratum\s+(\d+).*$/ && do {
- $stratum = $1;
- };
- /^offset\s+([0-9.-]+)$/ && do {
- $offset = $1;
- };
- }
- close(NTPDATE);
+ # sntp part
+ open my $sntp_pipe, "$sntp $host 2>/dev/null |"
+ or die "Cannot open $sntp pipe: $1";
+
+ while (<$sntp_pipe>) {
+ next if !/^\d{4}-\d\d-\d\d/;
+ my @output = split / /;
+
+ $offset = $output[3];
+ ($stratum = pop @output) =~ s/s(\d{1,2})/$1/;
+ }
+ close $sntp_pipe;
# got answers ? If so, go on.
if ($stratum) {