Trotz Proxy: Computerzeit ohne NTP synchronisieren

Wenn man in einem rigiden Firmennetz steckt oder aus anderen Gründen einen Proxy verwendet kann es vorkommen, dass sich die Computerzeit nicht mehr automatisch über das Internet synchronisiert.

Normalerweise erledigt dies das Network Time Protocol (NTP), hierfür werden UDP Pakete über Port 123 benutzt. Wenn der Proxy diese Pakete aber blockiert, wird die Zeit am Computer Tag für Tag ungenauer. Nach wenigen Wochen können schon locker mehrere Minuten Ungenauigkeit herrschen. Damit man nicht monatlich genervt die Zeit per Hand synchronisieren muss, gibt es – für Linux – eine einfache Lösung per Cronjob.

#!/bin/bash
if [ `id -u` = 0 ] ; then
sleep 20
echo Old System-Clock: $(date)
echo Old Hardware-Clock: $(/sbin/hwclock)
date -s "$(curl -sD - google.com | grep '^Date:' | cut -d' ' -f3-6)Z" >/dev/null
echo New System-Clock: $(date)
/sbin/hwclock -w
echo New Hardware-Clock: $(/sbin/hwclock)
else echo "You must run this script as root"
fi

Dieser Code lädt die Seite google.com herunter und zieht dann aus der HTTP Datei die aktuelle Zeit heraus, welche von dem Google-Server geliefert wird. Mit dieser Methode ist die Zeit allerdings nur auf eine Sekunde genau und nicht, wie bei NTP, im Millisekunden Bereich. Anschließend wird die Zeit sowohl in der Hardware-Clock des Mainboards als auch im Betriebssystem aktualisiert.

Dieses Skript speichert man sich in einer .sh Datei und lässt sie bestenfalls als Root(!) Cronjob mit dem Argument @reboot ausführen. Wenn man nicht weiß wie das geht, gibt es auf Ubuntuusers.de eine schöne Anleitung.

Wer mehr Infos zum curl Aufruf möchte, kann auf superuser.com sehen, warum diese Zeile so ist wie sie ist.

Diese Seite Teilen: