ntp-wait.in revision 275970
1275970Scy#! @PATH_PERL@ 2275970Scy 3275970Scypackage ntp_wait; 4275970Scyuse 5.006_000; 5275970Scyuse strict; 6275970Scyuse warnings; 7275970Scyuse lib "@PERLLIBDIR@"; 8275970Scyuse NTP::Util qw(ntp_read_vars); 9275970Scy 10275970Scyexit run(@ARGV) unless caller; 11275970Scy 12275970Scysub run { 13275970Scy my $opts; 14275970Scy if (!processOptions(\@_, $opts)) { 15275970Scy usage(1); 16275970Scy }; 17275970Scy 18275970Scy my $tries = $opts->{tries}; # How many tries before we give up? (10 min+) 19275970Scy my $sleep = $opts->{sleep}; # Seconds to sleep between tries (6s = 10/min) 20275970Scy my $verbose = $opts->{verbose}; # Be verbose? 21275970Scy 22275970Scy # Autoflush stdout 23275970Scy $| = 1; 24275970Scy 25275970Scy print "Waiting for ntpd to synchronize... " if $verbose; 26275970Scy 27275970Scy for my $i (1 .. $tries) { 28275970Scy my $info = ntp_read_vars(0, []); 29275970Scy 30275970Scy if (!defined $info) { 31275970Scy print "\bntpd is not running!\n" if $verbose; 32275970Scy return 1; 33275970Scy } 34275970Scy 35275970Scy if (!exists $info->{status_line}{leap}) { 36275970Scy print "\bLeap status not avalaible\n"; 37275970Scy return 1; 38275970Scy } 39275970Scy 40275970Scy my $leap = $info->{status_line}{leap}; 41275970Scy my $sync = $info->{status_line}{sync}; 42275970Scy 43275970Scy if ($leap =~ /(sync|leap)_alarm/) { 44275970Scy print "\b".(substr "*+:.", $i % 4, 1) if $verbose; 45275970Scy sleep $sleep if $i < $tries; 46275970Scy next; 47275970Scy } 48275970Scy 49275970Scy if ($leap =~ /leap_(none|((add|del)_sec))/) { 50275970Scy # We could check $sync here to make sure we like the source... 51275970Scy print "\bOK!\n" if $verbose; 52275970Scy return 0; 53275970Scy } 54275970Scy 55275970Scy print "\bUnexpected 'leap' status <$leap>\n"; 56275970Scy return 1; 57275970Scy } 58275970Scy 59275970Scy print "\bNo!\nntpd did not synchronize.\n" if $verbose; 60275970Scy return 1; 61275970Scy} 62275970Scy 63275970Scy@ntp_wait_opts@ 64275970Scy 65275970Scy1; 66275970Scy__END__ 67