184996Srobert#!/bin/sh 284996Srobert# 384996Srobert# ntpgroper host ... 484996Srobert# 584996Srobert# This script checks each hostname given as an argument to see if 684996Srobert# it is running NTP. It reports one of the following messages (assume 784996Srobert# the host is named "dumbo.hp.com": 884996Srobert# 9124139Sobrien# dumbo.hp.com not registered in DNS 10124139Sobrien# dumbo.hp.com not responding to ping 11124139Sobrien# dumbo.hp.com refused ntpq connection 12124139Sobrien# dumbo.hp.com not responding to NTP 1384996Srobert# dumbo.hp.com answers NTP version 2, stratum: 3, ref: telford.nsa.hp.com 1484996Srobert# dumbo.hp.com answers NTP version 3, stratum: 3, ref: telford.nsa.hp.com 1584996Srobert# 1684996Srobert# It ain't pretty, but it is kinda useful. 1784996Srobert# 1884996Srobert# Walter Underwood, 11 Feb 1993, wunder@hpl.hp.com 1984996Srobert# 2084996Srobert# converted to /bin/sh from /bin/ksh by scott@ee.udel.edu 24 Mar 1993 2184996Srobert 2291139SjakePATH="/usr/local/etc:$PATH" export PATH 2384996Srobert 2484996Srobertverbose=1 2584996Srobertlogfile=/tmp/cntp-log$$ 26102219Srobertntpqlog=/tmp/cntp-ntpq$$ 2784996Srobert 2884996Srobert# I wrap the whole thing in parens so that it is possible to redirect 2984996Srobert# all the output somewhere, if desired. 3091139Sjake( 3191139Sjakefor host in $* 3284996Srobertdo 3391110Sjake # echo "Trying $host." 3491110Sjake 3584996Srobert gethost $host > /dev/null 2>&1 3691139Sjake if [ $? -ne 0 ] 3784996Srobert then 3884996Srobert echo "$host not registered in DNS" 3984996Srobert continue 4085719Sjake fi 4184996Srobert 4284996Srobert ping $host 64 1 > /dev/null 2>&1 4384996Srobert if [ $? -ne 0 ] 4484996Srobert then 4584996Srobert echo "$host not responding to ping" 4684996Srobert continue 4784996Srobert fi 4884996Srobert 4984996Srobert # Attempt to contact with version 3 ntp, then try version 2. 5084996Srobert for version in 3 2 5184996Srobert do 5284996Srobert 5385719Sjake ntpq -c "ntpversion $version" -p $host > $ntpqlog 2>&1 5485719Sjake 5585719Sjake if fgrep -s 'Connection refused' $ntpqlog 5693678Stmm then 5793678Stmm echo "$host refused ntpq connection" 5884996Srobert break 5984996Srobert fi 6085719Sjake 61114386Speter responding=1 6284996Srobert fgrep -s 'timed out, nothing received' $ntpqlog > /dev/null && responding=0 6384996Srobert 6484996Srobert if [ $responding -eq 1 ] 65101287Sjake then 6684996Srobert ntpq -c "ntpversion $version" -c rl $host > $ntpqlog 6797445Sjake 6897445Sjake # First we extract the reference ID (usually a host or a clock) 6991139Sjake synchost=`fgrep "refid=" $ntpqlog` 7091139Sjake #synchost=${synchost##*refid=} # strip off the beginning of the line 7191139Sjake #synchost=${synchost%%,*} # strip off the end 7291139Sjake synchost=`expr "$synchost" : '.*refid=\([^,]*\),.*'` 7391139Sjake 7491139Sjake # Next, we get the stratum 7584996Srobert stratum=`fgrep "stratum=" $ntpqlog` 7684996Srobert #stratum=${stratum##*stratum=} 7784996Srobert #stratum=${stratum%%,*} 7884996Srobert stratum=`expr "$stratum" : '.*stratum=\([^,]*\),.*'` 7984996Srobert 8084996Srobert echo "$host answers NTP version $version, stratum: $stratum, ref: $synchost" 8184996Srobert break; 8284996Srobert fi 8384996Srobert 8484996Srobert if [ $version -eq 2 -a $responding -eq 0 ] 8584996Srobert then 8685719Sjake echo "$host not responding to NTP" 8784996Srobert fi 8885719Sjake done 8985719Sjakedone 9085719Sjake) 9185719Sjake# ) >> $logfile 9284996Srobert 9384996Srobertif [ -f $ntpqlog ]; then 9484996Srobert rm $ntpqlog 9584996Srobertfi 9684996Srobert