• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

NTP-Abgleich hinter Firewall

Hallo zusammen,

da ich hier in der Firma hinter einem Zwangsproxy stecke, der nur die Ports 80 und 443 durchläßt, habe ich keine Möglichkeit, direkt einen NTP-Server abzufragen.

Daher habe ich mir mal die Mühe gemacht, und ein kleines Script geschrieben, welches sich die Zeit von einer Webseite holt, umrechnet, und setzt.

Code:
echo "root-Passwort für setDate-Kommando?"
stty -echo
read password
stty echo
wget -q http://www.schulferien.org/Uhrzeit/uhrzeit.html -O - | grep -i "var serverTimeStamp" | gawk -F"[=|;]" ' {system(" date -d @$(("$2"/1000)) +%Y%m%dT%H%M%S ; echo '$password' | sudo -p \"\" -S date -s @$(("$2"/1000)) ") }'
Code kopieren und als hhtptime.sh abspeichern. (Die wget-Zeile ist leider umgebrochen worden, sollte eine Zeile sein)
Dann noch mittles chmod +x httptime.sh ausführbar machen.

Die ersten 4 Zeilen des Scripts fragen nach dem root-Password.
Der wget holt von http://www.schulferien.org die uhrzeit.html und
der grep filtert die interessante Zeile "var serverTimeStamp", welche
mittels gawk zerlegt wird und folgende Befehle ausführt:
  • das erste date zeigt die Uhrzeit in einem phrasefähigen Format an für weitere Scripte
    das zweite date setzt dann die Uhrzeit

Das erste date könnte also auch rausgenommen werden, das zweite date kann durch weitere Parameter erweitert werden.
Vllt möchte ja jemand auch noch ein hwclock einsetzten.

Die Genauigkeit ist natürlich abhängig von der Internetverbindung und die Antwortzeiten vom Server.
Sollte sich aber alles unter 1-2 Sekunden einspielen.

Das Script in den Autostart-Ordner, ggf. das root-Passwort im Script fest eintragen, und jeden Tag wird die Zeit neu gesetzt.

Beachte!
root-Kennwörter in einem Script hinterlegen ist böse, gaaanz böse.
Also vllt. via sudo dafür sorgen, das der normale User den date-Befehl ausführen darf.
Als Single oder Kind linux-unfähiger-Eltern sollte es aber kein Problem sein.

Viel Spaß
Ralf
 

HBtux

Member
Auf einen Web-Server würde ich mich nicht unbedingt verlassen....
Dies ist aber vielleicht Geschmackssache.

Ich würde einen DCF77 Empfänger an einen Linux-Server hängen und diesen intern als Zeit-Server verwenden....

Der DCF77 Empfänger, den ich verwende, Prüft selbständig das Zeitsignal auf Korrektheit....
Wenn das Signal nicht ordentlich empfangen wurde, läuft die Funkuhr mit einem internen Quarz weiter, bis das Signal wieder in Ordnung ist....

D.h. der angeschlossene Server bekommt immer eine korrekte Uhrzeit vom DCF77-Empfänger......
 
OP
R

RalfonLinux2

Newbie
Hi HBtux,

klar kann ich das machen, und wenn meine Netzwerker nicht so verbohrt wären, und die Global-IT aus Holland wüßte, was wir können und brauchen, dann wäre mit Sicherheit auch 123 tcp/udp auf dem Proxy freigeschaltet.

Ich könnte mich natürlich auch in die Reihe der Windows-User einreihen, und bekomme dann schön meine Zeit aus der Domäne.
Aber will ich das ?

Viele Wege führen nach Rom, und der oben beschriebene ist nur ein weiterer, wie man seine Zeit auf dem Rechner halbwegs korrekt einstellt, damit man die Mittagspause nicht verpaßt. Der Server holt sich die Zeit ja per DCF77 bzw. NTP und generiert damit ein javascript, welches ich dann interpretiere.

Und wenn ich beim Kunden sitze, sieht das schon komisch aus, wenn ich meinen Linuxserver aufbaue, damit ich auf meinem Linux-Laptop die Zeit einstelle. ;-)

Nichts für ungut.
Ralf

BTW: DCF77 sendet nur im Minutentakt, d.h. 59 Sekunden muss deine Uhr sowieso per Quarz laufen.
 

Tooltime

Advanced Hacker
RalfonLinux2 schrieb:
BTW: DCF77 sendet nur im Minutentakt, d.h. 59 Sekunden muss deine Uhr sowieso per Quarz laufen.
Völliger Blödsinn. Erstens ist die Sendefrequenz ein Frequenznormal, so das man Notfalls den Sekundentakt auch aus diesen ableiten kann. Zweitens, jede Sekunde wird durch Amplitudenmodulation des Frequenznormals markiert. Ausnahme ist nur die Sekunde 59, das Fehlen dieser Sekundenmarke kennzeichnet den Beginn einer neuen Minute.
 
OP
R

RalfonLinux2

Newbie
Ausnahme ist nur die Sekunde 59, das Fehlen dieser Sekundenmarke kennzeichnet den Beginn einer neuen Minute.
und somit ist diese Sekunde die entscheidene.
Erst hier wird erkannt, das 59 ist, und in 21ff folgenden dann die Zeitdaten.
Somit ist die Uhr erst nach 38 weiteren Sekunden syncron.

Es nützt mir also nichts, wenn ich mich am Sekundentakt syncronisiere, da ich so nur eine relative Zeitspanne bekomme.
Dieses Signal könnte man natürlich benutzen und so einen Sekundentakt erhalten.
Wenn ich aber keinen Empfang habe, dann habe ich ein Problem, und benötige doch wieder einen Quarz.
Dieser Quarz wird, da er ja nun schon mal vorhanden ist, höchstwahrscheinlich auch zum Erkennen der 21ff genutzt.

Da wir hier aber ja nicht im Elektroniker-Forum sind, sollten wir das Thema wechseln.
Wie schon geschrieben, sollte meine Lösung nur dazu dienen, die Mittagspause nicht zu verpassen.

Schönes Wochenende
Ralf
 

/dev/null

Moderator
Teammitglied
Guten Morgen allerseits!

Verständnisfrage:
Ging es in diesem Thread um eine Möglichkeit (!), einen NTP-Abgleich hinter einer Firewall zu erreichen, oder darum, wie DCF77 funktioniert?
Ich bin verwirrt :)

MfG Peter
der sein uraltes paralleles Druckeranschlusskabel mit DCF77-Uhr (Conrad) nicht weggeworfen hat, sondern weil ers eben hat auch immer noch nutzt ... . Trotz der Möglichkeit die Zeit aus dem Netz zu ziehen. Just for Fun.
 
Oben