summaryrefslogtreecommitdiffstats
path: root/core/modules/bwlp-stage4-tweaks/data/opt/openslx/scripts/cron-ntp
blob: 64dc2fda18e5b3a17189fa4b2b5740335e180112 (plain) (blame)
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
32
33
34
35
36
37
38
39
40
#!/bin/bash

. /opt/openslx/config

[ -z "$SLX_NTP_SERVER" ] && exit 0

declare -a cmd
if command -v ntpdate &> /dev/null; then
	cmd=( ntpdate )
	ntpdate --help 2>&1 | grep -q '\s-B\s' && cmd+=( -B )
	ntpdate --help 2>&1 | grep -q '\s-t\s' && cmd+=( -t 5 )
elif command -v ntpdig &> /dev/null; then
	cmd=( ntpdig )
	ntpdig --help 2>&1 | grep -q '\s-s\s' && cmd+=( -s )
	ntpdig --help 2>&1 | grep -q '\s-t\s' && cmd+=( -t 5 )
	ntpdig --help 2>&1 | grep -q '\s-p\s' && cmd+=( -p 2 )
elif busybox ntpd --help &> /dev/null; then
	command -v timeout &> /dev/null && cmd=( timeout 5 )
	cmd+=( busybox ntpd -q -n -p )
fi

# Random delay if not run on terminal
[ -t 0 ] || sleep $(( RANDOM % 60 ))

for srv in $SLX_NTP_SERVER; do
	"${cmd[@]}" "$srv" || continue
	# Success
	echo "Time updated from NTP"
	command -v hwclock &> /dev/null || exit 0
	sleep 1
	if [ "$SLX_BIOS_CLOCK" = "local" ]; then
		hwclock -l -w || echo "... but could not set BIOS clock to localtime"
	elif [ "$SLX_BIOS_CLOCK" = "utc" ]; then
		hwclock -u -w || echo "... but could not set BIOS clock to UTC"
	fi
	exit 0
done

echo 'No NTP server reachable!'
exit 1