1#!/bin/sh 2 3PATH=/usr/sbin:/usr/bin:/bin 4TIMEOUT=30 5KEY=State:/Network/Global/DNS 6DNS=/var/run/resolv.conf 7# sentinel to special case DNS readiness at boot 8LOG=/var/run/sntp.log 9 10ipconfig waitall 11 12if [[ ! -f ${LOG} ]]; then 13 DEADLINE=$((SECONDS+TIMEOUT)) 14 for (( CURTIMEOUT=TIMEOUT; SECONDS < DEADLINE; CURTIMEOUT=DEADLINE-SECONDS )); do 15 if scutil -w ${KEY} -t ${CURTIMEOUT}; then 16 if [[ -f ${DNS} ]]; then 17 break; 18 fi # else retry false alarms 19 else 20 logger -p daemon.err "$0: scutil key ${KEY} not present after ${TIMEOUT} seconds" 21 break; 22 fi 23 done 24fi 25 26for server in $(awk '/^server/ {print $2}' /etc/ntp.conf); do 27 if sntp -K /dev/null -s ${server} &> ${LOG}; then 28 break 29 else 30 logger -p daemon.err -f ${LOG} 31 fi 32done 33 34exec /usr/sbin/ntpd -c /private/etc/ntp-restrict.conf -n -g -p /var/run/ntpd.pid -f /var/db/ntp.drift 35