/contrib/ntp/scripts/ntp-groper
https://bitbucket.org/freebsd/freebsd-head/ · Shell · 95 lines · 49 code · 15 blank · 31 comment · 9 complexity · d3734cd7969a34fbb4313719c90428cb MD5 · raw file
- #!/bin/sh
- #
- # ntpgroper host ...
- #
- # This script checks each hostname given as an argument to see if
- # it is running NTP. It reports one of the following messages (assume
- # the host is named "dumbo.hp.com":
- #
- # dumbo.hp.com not registered in DNS
- # dumbo.hp.com not responding to ping
- # dumbo.hp.com refused ntpq connection
- # dumbo.hp.com not responding to NTP
- # dumbo.hp.com answers NTP version 2, stratum: 3, ref: telford.nsa.hp.com
- # dumbo.hp.com answers NTP version 3, stratum: 3, ref: telford.nsa.hp.com
- #
- # It ain't pretty, but it is kinda useful.
- #
- # Walter Underwood, 11 Feb 1993, wunder@hpl.hp.com
- #
- # converted to /bin/sh from /bin/ksh by scott@ee.udel.edu 24 Mar 1993
- PATH="/usr/local/etc:$PATH" export PATH
- verbose=1
- logfile=/tmp/cntp-log$$
- ntpqlog=/tmp/cntp-ntpq$$
- # I wrap the whole thing in parens so that it is possible to redirect
- # all the output somewhere, if desired.
- (
- for host in $*
- do
- # echo "Trying $host."
- gethost $host > /dev/null 2>&1
- if [ $? -ne 0 ]
- then
- echo "$host not registered in DNS"
- continue
- fi
- ping $host 64 1 > /dev/null 2>&1
- if [ $? -ne 0 ]
- then
- echo "$host not responding to ping"
- continue
- fi
-
- # Attempt to contact with version 3 ntp, then try version 2.
- for version in 3 2
- do
- ntpq -c "ntpversion $version" -p $host > $ntpqlog 2>&1
- if fgrep -s 'Connection refused' $ntpqlog
- then
- echo "$host refused ntpq connection"
- break
- fi
- responding=1
- fgrep -s 'timed out, nothing received' $ntpqlog > /dev/null && responding=0
- if [ $responding -eq 1 ]
- then
- ntpq -c "ntpversion $version" -c rl $host > $ntpqlog
- # First we extract the reference ID (usually a host or a clock)
- synchost=`fgrep "refid=" $ntpqlog`
- #synchost=${synchost##*refid=} # strip off the beginning of the line
- #synchost=${synchost%%,*} # strip off the end
- synchost=`expr "$synchost" : '.*refid=\([^,]*\),.*'`
- # Next, we get the stratum
- stratum=`fgrep "stratum=" $ntpqlog`
- #stratum=${stratum##*stratum=}
- #stratum=${stratum%%,*}
- stratum=`expr "$stratum" : '.*stratum=\([^,]*\),.*'`
- echo "$host answers NTP version $version, stratum: $stratum, ref: $synchost"
- break;
- fi
- if [ $version -eq 2 -a $responding -eq 0 ]
- then
- echo "$host not responding to NTP"
- fi
- done
- done
- )
- # ) >> $logfile
- if [ -f $ntpqlog ]; then
- rm $ntpqlog
- fi