1
0
Fork 0
mirror of https://github.com/pygos/init.git synced 2024-11-22 03:09:46 +01:00

Add helper script to update the time from NTP

Signed-off-by: David Oberhollenzer <david.oberhollenzer@tele2.at>
This commit is contained in:
David Oberhollenzer 2018-09-21 12:41:42 +02:00
parent 33aa4cedff
commit 66dde441bc
2 changed files with 69 additions and 1 deletions

View file

@ -1,4 +1,5 @@
helper_SCRIPTS += scripts/devfs.sh scripts/trymount.sh scripts/ifrename.sh
helper_SCRIPTS += scripts/ifcfg.sh scripts/ifdown.sh scripts/modules_load.sh
helper_SCRIPTS += scripts/setntpdate.sh
EXTRA_DIST += scripts/trymount.sh scripts/ifdown.sh
EXTRA_DIST += scripts/trymount.sh scripts/ifdown.sh scripts/setntpdate.sh

67
scripts/setntpdate.sh Executable file
View file

@ -0,0 +1,67 @@
#!/bin/sh
#
# SPDX-License-Identifier: GPL-3.0-or-later
#
# Copyright (C) 2018 - David Oberhollenzer
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
resolve() {
local domain="$1"
local server="$2"
if [ -x "$(command -v dig)" ]; then
if [ -z "$server" ]; then
dig +short "$domain"
else
dig +short "@$server" "$domain"
fi
return $?
fi
if [ -x "$(command -v drill)" ]; then
if [ -z "$server" ]; then
drill "$domain" | grep "^${domain}." | cut -d$'\t' -f5
else
drill "@$server" "$domain" | grep "^${domain}." |\
cut -d$'\t' -f5
fi
return $?
fi
exit 1
}
try_update() {
while read ip; do
if ntpdate -bu "$ip"; then
return 0
fi
done
return 1
}
pool="pool.ntp.org"
dns="1.1.1.1"
# try default DNS server first
resolve "$pool" "" | try_update
[ $? -eq 0 ] && exit 0
# try fallback public dns server
ping -q -c 1 "$dns" || exit 1
resolve "$pool" "$dns" | try_update
exit $?