wget in cronjob "ohne funktion"

  • Hallo Ihr Lieben,
    ich habe einen Pi neu aufgesetzt, wget installiert ...
    wenn ich wget von Hand aufrufe, dann funktioniert alles, wie es soll.

    Wenn ich jedoch die Befehlszeile via cronjob ausführe passiert nichts.
    Ich aktualisiere (weil der Pi 24/7 läuft) darüber meinen dyndns-Zugang
    zum heimischen Netzwerk.

    Den Befehl habe ich von meinem zweiten Pi übernommen, wo er (bis
    heute) sauber läuft ... wenn der Pi an ist.

    Ich weiss nicht mehr, wo ich noch suchen soll ... hat jmd. einen Tip,
    eine Idee für mich?

    THNX, LG Ralf aka synth

    PS: Alle anderen Befehle im cronjob funktionieren wie sie sollen.

    Der Vollständigkeit halber ...

    Code
    @reboot wget -q "http://user:kennwort@dyndns.kasserver.com"
    */60 * * * * wget -q "http://user:kennwort@dyndns.kasserver.com"
    */15 * * * * python2 /home/pi/iplogger/iplogger.py


    dass ich user und Kennwort ersetzt habe werdet Ihr mir hoffentlich verzeihen.

    Fotograf, jetzt im Bereich Administration bei AIDA-Cruises tätig

    Einmal editiert, zuletzt von synth (10. April 2016 um 21:27)

  • Crontab Eintrag posten sowie wie dieser eingetragen wurde (exakter Befehl). Desweiteren wie das Script erstellt wurde, ggf Ausführrechte vergessen?

    Geht nicht gibts nicht - aber ohne genauere Details nicht ergründbar.


  • Den Befehl habe ich von meinem zweiten Pi übernommen, wo er (bis
    heute) sauber läuft ... wenn der Pi an ist.

    Gibt es evtl. Unterschiede (OS, PI?, ...) zwischen deinem 2. PI und diesem PI?

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

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p6 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Einziger Unterschied ... viel rumprobiererei beim alten Pi ... und wheezy (auf dem Neuen jetzt jessy)

    Wie gesagt, von Hand funktioniert es (Kommandozeile oder sh)
    Die anderen Einträge funktionieren ebenfalls zuverlässig.

    Fotograf, jetzt im Bereich Administration bei AIDA-Cruises tätig

    Einmal editiert, zuletzt von synth (10. April 2016 um 22:37)


  • ... (auf dem Neuen jetzt jessy)


    Code
    @reboot wget -q "http://user:kennwort@dyndns.kasserver.com"
    */60 * * * * wget -q "http://user:kennwort@dyndns.kasserver.com"

    Funktioniert nur die Zeile mit "@reboot", nicht mit Jessie, oder auch die Zeile mit "*/60", nicht?

    Wie ist auf dem PI mit Jessie, die Ausgabe von:

    Code
    ls -la $(which wget)


    ?

    EDIT:

    Versuch mal in der crontab, auch mit dem kompletten Pfad für wget:

    Code
    /usr/bin/wget

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

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p6 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

    Einmal editiert, zuletzt von rpi444 (10. April 2016 um 23:51)

  • Ich würde den Eintrag so gestalten das eine mögliche Rückgabe auf stdout geleitet wird, wget ist nämlich eigentlich zum runterladen und speichern, wenn er da also zum Beispiel "index.html" jedesmal in ein Verzeichnis schreibt belastet das die SD unnötig - und eine mögliche Ausgabe sowie Fehlermeldungen dann in den Mülleimer umleiten, denn sonst wird das jedesmal im syslog erwähnt.

    Code
    wget -q -O- "http://user:kennwort@dyndns.kasserver.com" >/dev/null 2>&1

    */60 ist aber auch eine komische Angabe, setz da lieber jede Stunde, nicht alle 60 Minuten

    Code
    0 */1 * * *

    https://www.forum-raspberrypi.de/Thread-tutorial-crontab-cron-jobs

    Prüf auch mal besagtes syslog ob dort zu dem Zeitpunkt etwas drin steht.

    Ich würde aber auch lieber ein Script nehmen welches prüft ob die aktuelle Internet-IP der dyndns-IP entspricht und nur dann ein Update deiner dyndns vornimmt - das kannst du dann nämlich auch zB alle 5 Minuten ausführen und erreichst somit eine zuverlässigere Erreichbarkeit. Siehe dazu https://www.forum-raspberrypi.de/Thread-tutorial-dynamic-dns


  • ..., setz da lieber jede Stunde, nicht alle 60 Minuten

    Code
    * */1 * * *

    https://www.forum-raspberrypi.de/Thread-tutorial-crontab-cron-jobs

    BTW: Für jede Stunde sollte es so:

    Code
    0 */1 * * *


    sein.

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

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p6 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • So, ich hoffe ich übersehe jetzt keine Antwort und vergesse diese zu beantworten ...

    rpi444
    $ ls -la $(wich wget)

    Code
    -rwxr-xr-x 1 root root 375904 Nov 2 2014 /usr/bin/wget


    beide Zeilen werden nicht ausgeführt, der IP-Logger wird alle 15 Minuten ausgeführt.
    in der syslog sind die aufrufe ganz normal vermerkt, keine Fehlermeldung.

    Hab jetzt auch mal den Pfad auf /usr/bin/wget geändert ... aber zuversichtlich bin ich nicht.


    meigrafd
    ok ... wird gemacht ... hast recht

    EDIT: Leider war wget die einzige Aktualisierungsmethode, welche ich zum Laufen bekomme habe ... ddclient hat versagt, neben anderen Methoden, die ich so noch gefunden hatte.

    Fotograf, jetzt im Bereich Administration bei AIDA-Cruises tätig

    Einmal editiert, zuletzt von synth (11. April 2016 um 12:35)

  • Ich hab Zuhause ein dyndns.sh Script was das ganze bewerkstelligt - kann ich dir morgen Abend posten.
    (dachte die wär im DynamicDNS Tutorial aber nunja :()

    Im Prinzip ist das aber nicht sonderlich schwer...
    Zum abfragen der Internet-IP verwendet man Seiten wie:
    http://myip.dnsomatic.com , http://my.ip.fi , http://www.myip.ch , http://www.ip-lookup.de usw
    Dessen Rückgabe filtert man dann so das man nur die IP hat.
    Dann löst man seine DynDNS-Host auf (nslookup) und vergleicht die DynDNS-IP mit der Internet-IP, und nur wenn diese nicht übereinstimmen wird ein Update durchgeführt.
    Das Script kann man dann jede Minute via crontab ausführen.


    PS: Was noch Probleme machen könnte wären Sonderzeichen im Benutzernamen oder Password. Hast du Sonderzeichen wie Umlaute oder & % $ § ! / \ - usw ?

  • Hm ... im Kennwort ... da sind .()_ enthalten ...
    das wäre dann aber vermutlich ein Unterschied zwischen jessy und wheezy ...

    das mit dem Script ist auf jeden Fall interessant ...

    Fotograf, jetzt im Bereich Administration bei AIDA-Cruises tätig

  • Versuch mal das Password zu encoden - mithilfe der proc_url_encode() Funktion aus dem DynamicDNS Tutorial:

    Könnte dann also wie folgt aussehen:

    [code=php]#!/bin/bash
    USERNAME='benutzer'
    PASSWORD='pass()-word'
    DYNDNS='dynhost.kasserver.com'

    # Simple URL encoding
    proc_url_encode() {
    out=${1//%/%25}; out=${out//\{/%7B}; out=${out//\}/%7D}; out=${out//|/%7C};
    out=${out//\\/%5C}; out=${out//^/%5E}; out=${out//~/%7E}; out=${out//[/%5B};
    out=${out//]/%5D}; out=${out//\`/%60}; out=${out//#/%23}; out=${out//>/%3E};
    out=${out//\$/%24}; out=${out//&/%26}; out=${out//+/%2B}; out=${out//,/%2C};
    out=${out//\//%2F}; out=${out//:/%3A}; out=${out//;/%3B}; out=${out//=/%3B};
    out=${out//\?/%3F}; out=${out// /%20}; out=${out//</%3C};
    out=${out//\!/%21}; out=${out//\"/%22}; out=${out//\@/%40}; out=${out//\'/%27};
    out=${out//\(/%28}; out=${out//\)/%29}; out=${out//\*/%2A}; out=${out//\-/%2D};
    out=${out//\_/%5F}; out=${out//\./%2E}; out=${out//\€/%80};
    echo $out
    }

    # encode username / password
    USER=$(proc_url_encode "$USERNAME")
    PASS=$(proc_url_encode "$PASSWORD")

    CURRENT_IP=$(wget -qO- http://my.ip.fi)
    DYNDNS_IP=$(nslookup $DYNDNS)

    if [[ "$CURRENT_IP" != "$DYNDNS_IP" ]]; then
    wget -qO- "http://${USER}:${PASS}@dyndns.kasserver.com"
    fi

    exit 0
    [/php]ungetestet!

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!