#!/bin/bash ntpconf=/etc/ntp.conf ntpstep=/etc/ntp/step-tickers [ "$EUID" != "0" ] && exit 4 [ -x /usr/sbin/ntpdate ] || exit 5 [ -f /etc/sysconfig/ntpdate ] || exit 6 . /etc/sysconfig/ntpdate [ -f $ntpstep ] && tickers=$(sed 's/#.*//' $ntpstep) || tickers= if ! echo "$tickers" | grep -qi '[a-z0-9]' && [ -f $ntpconf ]; then # the step-tickers file doesn't specify a server, # use servers from ntp.conf instead tickers=$(awk '$1=="peer"||$1=="server"{print $2}' $ntpconf | \ grep -Ev '127\.127\.[0-9]+\.[0-9]+') fi if ! echo "$tickers" | grep -qi '[a-z0-9]'; then echo "NTP server not specified in $ntpstep or $ntpconf" exit 6 fi [ -z "$RETRIES" ] && RETRIES=2 retry=0 while true; do /usr/sbin/ntpdate -U ntp -s -b $OPTIONS $tickers &> /dev/null RETVAL=$? [ $RETVAL -eq 0 ] || [ $retry -ge "$RETRIES" ] && break sleep $[10 * (1 << $retry)] retry=$[$retry + 1] done [ $RETVAL -eq 0 ] && [ "$SYNC_HWCLOCK" = "yes" ] && /sbin/hwclock --systohc exit $RETVAL