Zeitserver - Problem mit "wget/curl"

  • Ich habe mir einen einfachen Arduino-Webserver eingerichtet der mir als Zeitbasis für meine beiden Raspberries in meinem Intranet dienen soll. Der Server ist an ein DCF-77 Modul angeschlossen und funktioniert einwandfrei (zeigt auf jedem Webbrowser die richtige Zeit an!)

    Jetzt möchte ich gerne mit "wget" oder "curl" die Zeit vom Server holen, in einer Variablen speichern und dann mit dem date Befehl meine Raspberries stellen!


    Gedacht habe ich mir das so:


    Code
    TIME="`wget -S -O- http://192.168.1.15`"
    Code
    date -s | grep TIME
    Code
    hwclock -w


    Aber schon nach dem ersten Befehl treten Probleme auf!


    Code
    TIME="`wget -S -O- http://192.168.1.15`" bringt:



    --2021-11-22 12:46:11-- http://192.168.1.15/

    Verbindungsaufbau zu 192.168.1.15:80 … verbunden.

    HTTP-Anforderung gesendet, auf Antwort wird gewartet …

    HTTP/1.1 200 OK

    Content-Type: text/html; charset=utf-8

    Connection: close

    Refresh: 0.8

    Länge: nicht spezifiziert [text/html]

    Wird in »STDOUT« gespeichert.


    - [ <=> ] 187 --.-KB/s in 0,008s


    2021-11-22 12:46:12 (24,1 KB/s) - auf die Standardausgabe geschrieben [/187]



    Die Zeit wird also vom Server geholt - in diesem Fall 2021-11-22 12:46:12


    Code
    "echo $TIME" bringt aber: "</html>R>21e>DCF77_Server 1.0 c 2021 </title></head>"


    Die Variable TIME enthält leider nicht die Zeit obwohl sie vom Server geholt wird! Was kann ich tun? Gibt es Alternativen?

  • Die Variable TIME enthält leider nicht die Zeit obwohl sie vom Server geholt wird! Was kann ich tun? Gibt es Alternativen?

    Versuch mal mit curl. Z. B.::

    Code
    :~$ TIME=$(curl -sD - heise.de | grep -i date | awk {'print $2,$3,$4,$5,$6,$7'}); echo $TIME
    Mon, 22 Nov 2021 13:27:16 GMT

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

  • Danke für Deine Antwort - aber leider ergibt:

    Code
    pi@SF1:~ $ TIME=$(curl -sD - 192.168.1.15 | grep -i date | awk {'print $2,$3,$4,$5,$6,$7'}); echo $TIME

    gar keine Ausgabe!!!

  • Was kann ich tun?

    Mit -S forderst Du die Headerdaten der Response an. Lass -S mal weg, unterdruecke die wget Ausgaben mit -q und nimm deshalb

    Code
    TIME="$(wget -q -O- http://192.168.1.15)"


    PS: Backticks sollte man besser nicht nehmen. Nimm lieber $(...) ;)

    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect."

    Linus Benedict Torvalds, 28.9.2003


    Hast Du die Woche schon Deine Raspberry gesichert =O Bei mir tut das raspiBackup automatisch ;)

  • Danke für Deine Antwort - aber leider ergibt:

    Code
    pi@SF1:~ $ TIME=$(curl -sD - 192.168.1.15 | grep -i date | awk {'print $2,$3,$4,$5,$6,$7'}); echo $TIME

    gar keine Ausgabe!!!

    Hast Du auch das prompt:

    Code
    :~ $

    per c&p übernommen und eingegeben?

    Versuch mal mit:

    Code
    curl -sD - 192.168.1.15 | grep -i date | awk {'print $2,$3,$4,$5,$6,$7'}

    und mit:

    Code
    curl -sD - heise.de | grep -i date | awk {'print $2,$3,$4,$5,$6,$7'}


    EDIT:


    BTW: Mit meiner FritzBox funktioniert es auch:

    Code
    :~$ curl -sD - 192.168.178.1 | grep -i date: | awk {'print $2,$3,$4,$5,$6,$7'}
    Mon, 22 Nov 2021 14:26:18 GMT

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Edited once, last by rpi444 ().

  • Code
    TIME="$(wget -q -O- http://192.168.1.15)"

    pi@SF1:~ $ echo $TIME

    </html>R>22e>DCF77_Server 1.0 c 2021</title></head>


    Tja...gar nicht so einfach!! Das erlebe ich jetzt schon seit Tagen ! Es will einfach nicht funktionieren!

    Danke für den Tip mit den Backticks...werde ich in Zukunft so machen!!!

    Code
    curl -sD - http://192.168.1.15

    ergibt:


    HTTP/1.1 200 OK

    Content-Type: text/html; charset=utf-8

    Connection: close

    Refresh: 0.8


    <!DOCTYPE HTML>

    <html>

    <HEAD>

    <head><title>DCF77_Server 1.0 c 2021</title></head>

    <body>

    <H1>

    <CENTER>

    '2021-11-22


    15:18:13'

    </CENTER>

    </H1>

    </body>

    </html>

  • pi@SF1:~ $ curl -sD - 192.168.1.15 | grep -i date: | awk {'print $2,$3,$4,$5,$6,$7'}

    pi@SF1:~ $


    Keine Ausgabe!!

    Edited once, last by hyle: Ein Beitrag von phb mit diesem Beitrag zusammengefügt. ().


  • Ausgabe auf Chromium!


    Ach so - also Plain-Text!


    Das versuche ich mal - melde mich später wieder!!

    Edited once, last by hyle: 3 Beiträge von phb mit diesem Beitrag zusammengefügt. ().

  • Dann parse doch die Zeit und das Datum aus dem html raus.

    Code
    d=( $(wget -q -O- http://192.168.1.15) | grep -E "^'|'$" | sed "s/'//" )
    echo "Date: ${d[0]}"
    echo "Time: ${d[1]}"

    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect."

    Linus Benedict Torvalds, 28.9.2003


    Hast Du die Woche schon Deine Raspberry gesichert =O Bei mir tut das raspiBackup automatisch ;)

    Edited once, last by framp ().

  • Hallo framp - ich habe versucht selber herauszubekommen was nicht stimmt habs aber leider nicht geschafft!!


    pi@SF1:~ $ d=( $(wget -q -O- http://192.168.1.15) | grep -E "^'|'$" | sed "s/'//" )

    bash: Syntaxfehler beim unerwarteten Wort `|'

  • Sorry. Eine Klammer steht falsch ...

    Code
    d=( $(wget -q -O- http://192.168.1.15 | grep -E "^'|'$" | sed "s/'//" ) )

    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect."

    Linus Benedict Torvalds, 28.9.2003


    Hast Du die Woche schon Deine Raspberry gesichert =O Bei mir tut das raspiBackup automatisch ;)

  • Noch eine Kleinigkeit - ich wollte die Systemzeit mit

    Code
    date -s | grep $TIME 

    stellen - geht aber leider nicht! Scheinbar kann date keine Variablen auslesen. Oder habe ich da was falsch gemacht?

  • Habe den "HTML-Kram auf der Website" gelöscht!!

    Das ist natuerlich der beste Weg. Dann braucht man den html Kram nicht wieder beim Empfaenger wegschmeissen. Besser und universeller einsetzbar waere allerdings ein JSON mit date und time vom Server zu liefern.

    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect."

    Linus Benedict Torvalds, 28.9.2003


    Hast Du die Woche schon Deine Raspberry gesichert =O Bei mir tut das raspiBackup automatisch ;)

  • Code
    pi@SF1:~ $ date -s $TIME

    date: Dem Argument „„22:54:13'\r““ fehlt das führende „+“.

    Wenn eine Option angegeben wird, um das Datum zu spezifizieren, muss jedes

    Argument, das keine Option ist, eine Formatzeichenkette sein, die mit „+“

    beginnt.

    „date --help“ liefert weitere Informationen.

    Verstehe nur Bahnhof - ist wirklich schon spät!!!!

  • Noch eine Kleinigkeit - ich wollte die Systemzeit mit

    Code
    date -s | grep $TIME 

    stellen - geht aber leider nicht! Scheinbar kann date keine Variablen auslesen. Oder habe ich da was falsch gemacht?

    Wenn Du Datum und Uhrzeit setzen willst, dann versuch mal mit:

    Code
    date
    sudo rdate -4nu ptbtime2.ptb.de
    date && rdate -4pnu 3.ubuntu.pool.ntp.org

    (wenn c&p nicht geht, dann manuell eingeben).

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden