Annotation of embedaddon/ntp/scripts/ntp-groper, revision 1.1.1.1

1.1       misho       1: #!/bin/sh 
                      2: #
                      3: # ntpgroper host ...
                      4: #
                      5: # This script checks each hostname given as an argument to see if
                      6: # it is running NTP.  It reports one of the following messages (assume
                      7: # the host is named "dumbo.hp.com":
                      8: #
                      9: #   dumbo.hp.com not registered in DNS
                     10: #   dumbo.hp.com not responding to ping
                     11: #   dumbo.hp.com refused ntpq connection
                     12: #   dumbo.hp.com not responding to NTP
                     13: #   dumbo.hp.com answers NTP version 2, stratum: 3, ref: telford.nsa.hp.com
                     14: #   dumbo.hp.com answers NTP version 3, stratum: 3, ref: telford.nsa.hp.com
                     15: #
                     16: # It ain't pretty, but it is kinda useful.
                     17: #
                     18: # Walter Underwood, 11 Feb 1993, wunder@hpl.hp.com
                     19: #
                     20: # converted to /bin/sh from /bin/ksh by scott@ee.udel.edu 24 Mar 1993
                     21: 
                     22: PATH="/usr/local/etc:$PATH" export PATH
                     23: 
                     24: verbose=1
                     25: logfile=/tmp/cntp-log$$
                     26: ntpqlog=/tmp/cntp-ntpq$$
                     27: 
                     28: # I wrap the whole thing in parens so that it is possible to redirect
                     29: # all the output somewhere, if desired.
                     30: (
                     31: for host in $*
                     32: do
                     33:     # echo "Trying $host."
                     34: 
                     35:     gethost $host > /dev/null 2>&1
                     36:     if [ $? -ne 0 ]
                     37:     then
                     38:         echo "$host not registered in DNS"
                     39:         continue
                     40:     fi
                     41: 
                     42:     ping $host 64 1 > /dev/null 2>&1 
                     43:     if [ $? -ne 0 ]
                     44:     then
                     45:         echo "$host not responding to ping"
                     46:        continue
                     47:     fi
                     48:     
                     49:     # Attempt to contact with version 3 ntp, then try version 2.
                     50:     for version in 3 2
                     51:     do
                     52: 
                     53:         ntpq -c "ntpversion $version" -p $host > $ntpqlog 2>&1
                     54: 
                     55:         if fgrep -s 'Connection refused' $ntpqlog
                     56:         then
                     57:             echo "$host refused ntpq connection"
                     58:             break
                     59:         fi
                     60: 
                     61:         responding=1
                     62:         fgrep -s 'timed out, nothing received' $ntpqlog > /dev/null && responding=0
                     63: 
                     64:         if   [ $responding -eq 1 ]
                     65:         then
                     66:            ntpq -c "ntpversion $version" -c rl $host > $ntpqlog
                     67: 
                     68:             # First we extract the reference ID (usually a host or a clock)
                     69:             synchost=`fgrep "refid=" $ntpqlog`
                     70:             #synchost=${synchost##*refid=} # strip off the beginning of the line
                     71:             #synchost=${synchost%%,*}      # strip off the end  
                     72:            synchost=`expr "$synchost" : '.*refid=\([^,]*\),.*'`
                     73: 
                     74:             # Next, we get the stratum
                     75:             stratum=`fgrep "stratum=" $ntpqlog`
                     76:             #stratum=${stratum##*stratum=}
                     77:             #stratum=${stratum%%,*}
                     78:            stratum=`expr "$stratum" : '.*stratum=\([^,]*\),.*'`
                     79: 
                     80:            echo "$host answers NTP version $version, stratum: $stratum, ref: $synchost"
                     81:             break;
                     82:         fi
                     83: 
                     84:        if [ $version -eq 2 -a $responding -eq 0 ]
                     85:         then
                     86:             echo "$host not responding to NTP"
                     87:         fi
                     88:     done
                     89: done
                     90: )
                     91: # ) >> $logfile
                     92: 
                     93: if [ -f $ntpqlog ]; then
                     94:     rm $ntpqlog
                     95: fi

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>