Annotation of embedaddon/ntp/scripts/checktime.in, revision 1.1
1.1 ! misho 1: #! @PATH_PERL@
! 2: #! @PATH_PERL@ -d
! 3: #
! 4: # This script compares the time of several machines with the
! 5: # time on the local host.
! 6: #
! 7: # Use or modify it as you wish.
! 8: #
! 9: # As the original author is only expecting 14 minutes of fame,
! 10: # leaving his name attached would be appreciated.
! 11: #
! 12: # R. Gary Cutbill <rgary@chrysalis.com>
! 13: # 21 April 1999
! 14: #
! 15: $tol=2.0;
! 16: $|=1;
! 17: print "Time Check";
! 18:
! 19: open(HOSTS,"ypcat hosts.byaddr |"); # get a list of hosts from the yp server.
! 20:
! 21: while ($line=<HOSTS>) { # loop for each host getting the offset compared to localhost
! 22: ($addr,$host,$aliases)=split(/\s+/,$line,3);
! 23: $res=`/usr/local/bin/ntptrace -m 1 -r 1 -t 1 $host`;
! 24: print ".";
! 25: chop $res;
! 26: push (@results,$res);
! 27: }
! 28: print "\n";
! 29:
! 30:
! 31: #
! 32: # Sort the list of hosts, and print out there offsets
! 33: # from the local host.
! 34: #
! 35: @list=sort appropriately @results;
! 36: foreach $i ( @list ) {
! 37:
! 38: @dargs=split(/\s+/,$i);
! 39: if ( $dargs[1] eq "\*Timeout\*" ) {
! 40: print "$i\n";
! 41: chop $dargs[0];
! 42: push(@down,$dargs[0]);
! 43: } else {
! 44: printf "%-25s %7s %3s %6s %10s %5s %8s %8s\n",@dargs;
! 45: if ( ( $dargs[4] > $tol ) || ( $dargs[4] < -$tol ) ) {
! 46: chop $dargs[0];
! 47: push(@toofarout,$dargs[0]); }
! 48: }
! 49: }
! 50: #
! 51: # When the above list finishes, hosts that are different by +/- $tol (two seconds)
! 52: # are in @toofarout. Hosts that are down are in @down. They are treated the same
! 53: # way here, but you might want to do something different depending on your site.
! 54: #
! 55: # print a set of suggested rsh commands to run on the hosts that
! 56: # don't have "good" time. "restartntp" is left as an excersize to the reader.
! 57: # I usually use it to kill a running xntpd, ntpdate some server, and the start xntp
! 58: # again.
! 59: #
! 60: print "\nConsider:\n";
! 61: foreach $i ( (@down,@toofarout) ) {
! 62: print " rsh $i sudo restartntp\n";
! 63: }
! 64:
! 65:
! 66: #
! 67: # sort the results from the list. First by stratum, then by time deviation
! 68: # Put hosts that didn't respond (timed out) on the bottom.
! 69: #
! 70: sub appropriately {
! 71: @af=split(/\s+/,$a);
! 72: @bf=split(/\s+/,$b);
! 73: $aba= ($af[4]<0)?-$af[4]:$af[4];
! 74: $abb= ($bf[4]<0)?-$bf[4]:$bf[4];
! 75:
! 76: ( $af[1] ne $bf[1] ) ? $bf[1] cmp $af[1] :
! 77: ( ( $af[2] != $bf[2] ) ? ( $bf[2] <=> $af[2] ) :
! 78: ( ( $aba != $abb ) ? ( $abb <=> $aba ) : ($af[0] cmp $bf[0] ) ) );
! 79: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>