[Script] DynDns Pflicht Login

  • Hallo Qnap-Gemeinde.
    Seit einiger Zeit ist es bei DynDNS mit einem "Free-Account" wohl erforderlich, sich einmal im Monat auf der Webseite händisch anzumelden. Nun, in einem anderen Forum (genauer gesagt im IP-Phone-Forum) bin ich über ein Script gestolpert, mit dem dies auf einer mit Freetz modifizierten Fritz!Box automatisiert werden kann (auf meiner 6360_Cable leider nicht möglich).
    Nun, da auf unseren Qnap's ja ebenfalls Linux läuft, denke ich, dass dies auch auf diesen "Boxen" möglich ist, wenn das Script dementsprechend angepasst wird (zum Beispiel der Teil mit dem E-Mail-Versand). Mir fehlen für sowas aber leider die notwendigen "Linux-Skills".
    Viel Spaß damit.


    Quellen:
    http://www.ip-phone-forum.de/showthread.php?t=260356
    http://blog.stuart.shelton.me/archives/1024

  • ich antworte hier mal, da ich gestern auch gekappt wurde und mein Hostname nun weg war, ich hatte zufällig auch gestern ein Mail bekommen in der mir dies geschrieben wurde.
    Jetzt bin ich ebenfalls am suchen habe aber auch eine super Lösung gefunden, nur weiß ich weder wie man diesen crontab erstellt und wo das script hin muss.
    Bin da absoluter Laie.


    Ich hoffe mir kann nun jemand als Anfänger behilflich sein wo und wie ich dieses einbaue..!


    Folgendes Skript automatisiert das Login im Account von DynDNS.org. Man muss nur noch den Usernamen und das Passwort eintragen.

    Code
    #!/usr/bin/bash########################################################################## dyndnslogin# Automate login to prevent account expiration################################################################################################################################################## DynDNS SettingsUSERNAME="username"PASSWORD="passwort"######################################################################### VariabelnPROGNAME=dyndnsloginCOOKIE=`mktemp --tmpdir="/tmp" -t ${PROGNAME}_cookie_XXXXX`OUTPUT=`mktemp --tmpdir="/tmp" -t ${PROGNAME}_output_XXXXX`USERAGENT="Mozilla/5.0"######################################################################### MainMULTIFORM=`curl -s -A $USERAGENT -c $COOKIE https://account.dyn.com \  | awk -F\' '/multiform/{ print $6 }'`curl -s --location -A "$USERAGENT" -b $COOKIE -c $COOKIE -o $OUTPUT \  --data "username=$USERNAME&password=$PASSWORD&iov_id=&submit=Log+in&multiform=$MULTIFORM" \  https://account.dyn.com/if grep -E "(Welcome|Hi).*$USERNAME" $OUTPUT > /dev/null 2>&1then  echo Login successfulelse  echo Login failed  FAILED="true"firm $COOKIErm $OUTPUTif [ "$FAILED" = "true" ]then  exit 1fi# EOF


    Nach dem Ausführen erhält man die Rückmeldung, ob das Login funktioniert hat oder nicht.


    Mit crontab -e bearbeitet man die Crontab und fügt dort folgende Zeile ein:

    Code
    5 23 * * 0 /usr/local/bin/dyndnslogin


    Somit wird an jedem Sonntag um 23:05h ein Login im DynDNS.org Account gemacht.
    Ich habe dies nicht selber erstellt falls Fragen kommen, ich habe dies mir selber nur gespeichert.
    Werde aber bei Bedarf die Seite suchen und den Link hier einstellen.

    Einmal editiert, zuletzt von moonsorrox ()

  • Zitat von "moonsorrox"


    Jetzt bin ich ebenfalls am suchen habe aber auch eine super Lösung gefunden, nur weiß ich weder wie man diesen crontab erstellt und wo das script hin muss.


    Vorausgesetzt das Script läuft auf der QNAP, sind das die kleinsten Probleme:
    1. Script kannst du mehr oder weniger ablegen wo du willst. Ich hab mir einen Freigabeordner erstellt indem ich diverse Scripte liegen habe.
    2. Crontab bearbeiten: http://forum.qnapclub.de/viewtopic.php?f=80&t=1033


    EDIT
    So einfach ist's dann wohl doch nicht. Das Script funktioniert nicht und es liegt nicht nur an der ersten Zeile, die bereits falsch ist ;)
    Aber vielleicht lässt es sich ja als Grundlage verwenden, wenn man es entsprechend anpasst.

  • Kann man das evtl. anpassen denn dies ist so schon in Gebrauch auf einem MacBook, nur eben nicht auf einem Qnap NAS

  • so ich habe jetzt den Link: zum Artikel gefunden...
    Ich hoffe es kann trotzdem jemand helfen wie ich das Teil umbaue um es auf dem Qnap zu verwenden

  • Ich habe das Script aus dem LINK (von moonsorrox) grade mal probiert. Ich denke, der Busybox unserer QNAP fehlen dazu ein par Funktionen. Jedenfalls bekomme ich folgende Meldung beim Ausführen via Console:

    Code
    -sh: dynlogin.sh: command not found
  • Zitat von "SaschaBr"

    Jedenfalls bekomme ich folgende Meldung beim Ausführen via Console:


    Weil die Shebang-Zeile bereits falsch ist. Diese muss lauten:

    Bash
    #!/bin/sh


    Dann kommt der nächste Fehler bei mktemp, kann aber korrigiert werden:

    Code
    COOKIE=`mktemp /tmp/${PROGNAME}_cookie_XXXXXX`
    OUTPUT=`mktemp /tmp/${PROGNAME}_output_XXXXXX`


    Und nun komme ich nicht mehr weiter, da keine Fehlermeldungen mehr kommen, der Login aber immer scheitert. Zumindest lt. Rückgabewert des Scripts, bei DynDNS kann man glaub nirgends Datum und Zeit des letzten Logins sehen.

  • ich würde gerne helfen aber totaler Laie was dieses anbetrifft, ich habe schon auf der Seite gefragt aber noch keine Antwort bekommen..
    Naja und es ist nicht gerade PC Wetter :D

  • Ich habe einen dyndns.org Account seit fast 10 Jahren und keine dieser Mails erhalten.
    Ich würde da kein Federlesen betreiben und den Anbieter wechseln.
    Ich lasse mich ungern zwingen.

  • is schon richtig, aber hier kommt der Spieltrieb durch,....

  • Was nutzt mir ein dynaccout, wenn ich den dauernd bestätigen muss.
    Falsche Welt.
    Aufwiedersehen dyndns.org , wilkommen no-ip.org .

  • Zitat von "frosch2"

    Ich habe einen dyndns.org Account seit fast 10 Jahren und keine dieser Mails erhalten.


    ich auch, aber weg war er seit einigen Tagen.. Ich hatte auch nichts gemacht weil die Mails sicher im Spam verschwunden sind... Bei meinen Eltern das selbe ich komme aus der Ferne nicht mehr auf die Fritzbox...


    Habe jetzt im Internet etwas gefunden wo man dies auf dem eigenen Webspace machen kann ein php Script und es sollte gehen aber hatte noch keine Zeit es zu testen/probieren.


    Ja klar richtige Entscheidung, wer nicht will... weg :thumb: Recht hat er

  • Also bei mir war folgendes Script erfolgreich:

    Bash
    #!/bin/sh#DEBUG=1LOGIN="***"PASSWORD="***"COOKIES="/tmp/.dynsdns.cookies.txt"AL="en-gb"UA="Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)"LOGINURL="https://account.dyn.com/entrance/"POSTURL="$LOGINURL"CHKURL="https://account.dyn.com/"[[ $DEBUG ]] && DST="-" || DST="/dev/null"# random sleep time 1-3000#DELAY=$(($(hexdump -n 2 -e '"%u"' /dev/urandom | tr -d '-' ) % 3000 + 1))# If the method above didn't work, try the following method witk awk-srand.# DELAY=$(awk 'BEGIN {srand(); print int (rand() * 3000) }')#echo >&2 "Wait '$DELAY' sec..."#sleep $DELAY[[ -w "$( dirname "$COOKIES" )" ]] || { echo >&2 "FATAL: Cannot write to directory '$( dirname "$COOKIES" )'" ; exit 1; }# Ensure no broken session caching...if [[ -s "$COOKIES" ]]; then        [[ -w "$COOKIES" ]] || { echo >&2 "FATAL: Cannot write to file '$COOKIES'" ; exit 1 ; }        rm -f "$COOKIES" >/dev/null 2>&1fi[[ $DEBUG ]] && echo >&2 "DEBUG: Fetching initial headers to pre-load cookies..."curl -b $COOKIES -c $COOKIES -Ikso "$DST" -A \"$UA\" --url "$LOGINURL"[[ $DEBUG ]] && echo >&2 "DEBUG: Fetching UID..."VALUE="$( curl -b $COOKIES -c $COOKIES -kso - -A "$UA" --url "$LOGINURL" | grep "multiform" | cut -d"'" -f 6 | head -n 1 )"#VALUE="$(curl -b $COOKIES -c $COOKIES -kso - -A \"$UA\" --url "$LOGINURL" | \#       grep -m 1 "multiform" | \#       cut -d\' -f 6)"[[ $DEBUG ]] && echo >&2 "DEBUG: Read UID as '$VALUE' - posting data..."curl -b $COOKIES -c $COOKIES -d "username=$LOGIN" -d "password=$PASSWORD" -d "iov_id" -d "multiform=$VALUE" -e "$LOGINURL" -kso "$DST" -A \"$UA\" --url "$POSTURL"[[ $DEBUG ]] && echo >&2 "DEBUG: Response received - verifying result..."curl -b $COOKIES -c $COOKIES -e "$POSTURL" -kso - -A \"$UA\" -H "Accept-Language: $AL" --url "$CHKURL" | \        grep -qE "<span>(Welcome|Hi)&nbsp;<b>$LOGIN</b>" \        && echo "Login successful" \        || { echo >&2 "Login failed" ; /sbin/write_log "DynDNS failed to login" 2;exit 1 ; }exit 0



    Mit einer Modifikation im Fehlerfall könnte man einen Fehlereintrag ins Systemprotokoll machen lassen und so automatisch per Mail benachrichtigt werden.
    Edit:
    Modifikation noch eingefügt.

    2 Mal editiert, zuletzt von dr_mike ()

  • hast du das so in Betrieb..?
    Wie erfolgt der Aufruf mit einer Änderung im crontab


    Ich muss doof fragen da ich noch nie solch ein Script eingesetzt habe bzw. überhaupt erstellt

  • Habe es grad eben nur auf der Konsole getestet.
    Wenn du es dyndnslogin.sh nennst und es z.B. in /share/HDA_DATA/ablegst, dann wäre der Crontabeintrag

    Code
    10 15 * * 4 /share/HDA_DATA/dyndnslogin.sh


    Vorher noch mit

    Code
    chmod 711 /share/HDA_DATA/dyndnslogin.sh


    Ausführbar machen


    Edit:
    Cron DayofWeek auf 4 gesetzt (vorher '*').

    Einmal editiert, zuletzt von dr_mike ()

  • OK ich werde das morgen mal antesten... vielen Dank ich werde berichten


    Das script habe ich schnell noch auf den Qnap gebracht..
    Was macht der untere Teil deines Code, wo muss der hin oder als was wird er gespeichert


    Edit: leider kommt bei mir ./dyndnslogin.sh: No such file or directory


    Edit: ist hier ein Fehler drin: dynsdns richtig..?

    Code
    COOKIES="/tmp/.dynsdns.cookies.txt"

    3 Mal editiert, zuletzt von GorillaBD () aus folgendem Grund: Code Block hinzugefügt.