home *** CD-ROM | disk | FTP | other *** search
/ tusportal.tus.k12.pa.us / tusportal.tus.k12.pa.us.tar / tusportal.tus.k12.pa.us / Wyse / latest-image.raw / 0.img / usr / sbin / ntp-wait < prev    next >
Text File  |  2010-05-08  |  1KB  |  55 lines

  1. #! /usr/bin/perl -w
  2.  
  3. die "perl5 needed\n" unless ($] > 5);
  4.  
  5. use Getopt::Std;
  6.  
  7. $opt_h = 0;            # Print help message
  8. $opt_f = 0;            # 'Hard' failure if 'state' is unknown
  9. $opt_n = 1000;            # How many tries before we give up? (10 min+)
  10. $opt_s = 6;            # Seconds to sleep between tries (6s = 10/min)
  11. $opt_v = 0;            # Be verbose?
  12.  
  13. getopts('hfn:s:v');
  14.  
  15. $cmd = 'ntpq -c "rv 0 state"';
  16.  
  17. $| = 1;                # Autoflush output.
  18.  
  19. if( $opt_h )
  20. {
  21.     print "\nUsage: ntp-wait [ options ]\n\n".
  22.       "   -h    Print this message\n". 
  23.       "   -f    'Hard' failure if 'state' is unknown\n".
  24.       "   -n    How many tries before we give up? Default 1000 (ca 10 min)\n".
  25.       "   -s    Seconds to sleep between tries. Default 6.\n".
  26.       "   -v    Be verbose\n\n";
  27.     exit 0;
  28. }
  29.  
  30. print "Waiting for ntpd to synchronize...  " if ($opt_v);
  31. for ($i = 0; $i < $opt_n; ++$i) {
  32.     open(Q, $cmd." 2>&1 |") || die "Can't start ntpq: $!";
  33.     while(<Q>) {
  34.       if (/^state=4/) {
  35.     print "\bOK!\n" if ($opt_v);
  36.     exit 0;
  37.       }
  38.  
  39.       if (/request variable was unknown/) {
  40.     print "\bCan't tell!\nPerhaps you are running an old version of ntpd.\n" if ($opt_v);
  41.     exit $opt_f;
  42.       }
  43.  
  44.       if (/Connection refused/) {
  45.     print "\bntpd is not running!\n" if ($opt_v);
  46.     exit 1;
  47.       }
  48.     }
  49.     close(Q);
  50.     print "\b".substr("*+:.", $i % 4, 1) if ($opt_v);
  51.     sleep($opt_s);
  52. }
  53. print "\bNo!\nntpd did not synchronize.\n" if ($opt_v);
  54. exit 1;
  55.