/usr/sbin/ntp-wait is in ntp 1:4.2.8p10+dfsg-3+deb9u2.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 | #! /usr/bin/perl
package ntp_wait;
use 5.006_000;
use strict;
use warnings;
use lib "/usr/share/ntp/lib";
use NTP::Util qw(ntp_read_vars);
exit run(@ARGV) unless caller;
sub run {
my $opts;
if (!processOptions(\@_, $opts)) {
usage(1);
};
my $tries = $opts->{tries}; # How many tries before we give up? (10 min+)
my $sleep = $opts->{sleep}; # Seconds to sleep between tries (6s = 10/min)
my $verbose = $opts->{verbose}; # Be verbose?
# Autoflush stdout
$| = 1;
print "Waiting for ntpd to synchronize... " if $verbose;
for my $i (1 .. $tries) {
my $info = ntp_read_vars(0, []);
if (!defined $info) {
print "\bntpd is not running!\n" if $verbose;
return 1;
}
if (!exists $info->{status_line}{leap}) {
print "\bLeap status not available\n";
return 1;
}
my $leap = $info->{status_line}{leap};
my $sync = $info->{status_line}{sync};
if ($leap =~ /(sync|leap)_alarm/) {
print "\b".(substr "*+:.", $i % 4, 1) if $verbose;
sleep $sleep if $i < $tries;
next;
}
if ($leap =~ /leap_(none|((add|del)_sec))/) {
# We could check $sync here to make sure we like the source...
print "\bOK!\n" if $verbose;
return 0;
}
print "\bUnexpected 'leap' status <$leap>\n";
return 1;
}
print "\bNo!\nntpd did not synchronize.\n" if $verbose;
return 1;
}
# EDIT THIS FILE WITH CAUTION (ntp-wait-opts)
#
# It has been AutoGen-ed March 21, 2017 at 10:40:00 AM by AutoGen 5.18.5
# From the definitions ntp-wait-opts.def
# and the template file perlopt
use Getopt::Long qw(GetOptionsFromArray);
Getopt::Long::Configure(qw(no_auto_abbrev no_ignore_case_always));
my $usage;
sub usage {
my ($ret) = @_;
print STDERR $usage;
exit $ret;
}
sub paged_usage {
my ($ret) = @_;
my $pager = $ENV{PAGER} || '(less || more)';
open STDOUT, "| $pager" or die "Can't fork a pager: $!";
print $usage;
exit $ret;
}
sub processOptions {
my $args = shift;
my $opts = {
'tries' => '100',
'sleep' => '6',
'verbose' => '',
'help' => '', 'more-help' => ''
};
my $argument = '';
my $ret = GetOptionsFromArray($args, $opts, (
'tries|n=i', 'sleep|s=i', 'verbose|v',
'help|?', 'more-help'));
$usage = <<'USAGE';
ntp-wait - Wait for ntpd to stabilize the system clock - Ver. 4.2.8p10
USAGE: ntp-wait [ -<flag> [<val>] | --<name>[{=| }<val>] ]...
-n, --tries=num Number of times to check ntpd
-s, --sleep=num How long to sleep between tries
-v, --verbose Be verbose
-?, --help Display usage information and exit
--more-help Pass the extended usage text through a pager
Options are specified by doubled hyphens and their name or by a single
hyphen and the flag character.
USAGE
usage(0) if $opts->{'help'};
paged_usage(0) if $opts->{'more-help'};
$_[0] = $opts;
return $ret;
}
END { close STDOUT };
1;
__END__
|