summaryrefslogtreecommitdiff
path: root/scripts/ntpd-set.sh
blob: d6fd8f25b56295b71d915171304954a2bbefc8c2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/bin/sh
max_attempts=4

# This script takes a list of ntp servers and passes them to ntpd to set the
# system time. If a /etc/ntpd.conf file exists, the servers there are used,
# if not, some default values are passed
set_time() {
    # -q flag makes ntpd exit after setting the time once
    ntpd -q -n -p "$1"
}

check_time() {
    for attempt in $(seq "$max_attempts"); do
        for arg ; do
            echo $arg
            if set_time "$arg" ; then
                return 0
            fi
        done
        sleep 2
    done
    return 1
}

if [ -f /etc/ntpd.conf ]; then
    server_list=`cat /etc/ntpd.conf | sed ':a;N;$!ba;s/\n/ /g;s/server//g'`
    check_time $server_list
else
    # Use a default list if there's no config
    check_time 0.pool.ntp.org 1.pool.ntp.org 2.pool.ntp.org 3.pool.ntp.org
fi