1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- #!/bin/bash
- # (using bashism (arrays) in dhcp config)
- #exec >/dev/null
- exec 2>&1
- exec </dev/null
- user=root
- start_delay=15
- net_down_delay=5
- pool="us.pool.ntp.org" # replace "us" with your country code
- service="${PWD##*/}"
- rundir="/var/run/service/$service"
- default_p_opt="-p 0.$pool -p 1.$pool -p 2.$pool -p 3.$pool"
- echo "* Checking network"
- test -f /var/run/service/fw/up || exec sleep $net_down_delay
- # With multiple interfaces (e.g. wired+wireless) going up,
- # networking scripts may restart ntpd service several times
- # in quick succession. Do not be too eager to start sending
- # NTP requests:
- sleep $start_delay
- # Make sure rundir/ exists
- mkdir -p "$rundir" 2>/dev/null
- chown -R "$user": "$rundir"
- chmod -R a=rX "$rundir"
- rm -rf rundir 2>/dev/null
- ln -s "$rundir" rundir
- # Grab config from dhcp
- cfg=-1
- for f in rundir/*.ntpconf; do
- test -f "$f" || continue
- . "$f"
- done
- # Select peers
- p_opt=""
- cfg=0
- while test x"${ntpip[$cfg]}" != x""; do
- p_opt="$p_opt -p ${ntpip[$cfg]}"
- let cfg=cfg+1
- done
- test x"$p_opt" == x"" && p_opt="$default_p_opt"
- if test x"$p_opt" == x""; then
- echo "* No NTP peers configured, stopping"
- svc -o .
- exec sleep 1
- fi
- # Let others know that we are up
- date '+%Y-%m-%d %H:%M:%S %Z' >rundir/up
- # Go go go
- echo "* Starting ntpd[$$]"
- exec \
- env - PATH="$PATH" \
- softlimit \
- setuidgid "$user" \
- ntpd -ddnNl -S ./ntp.script $p_opt
|