DynDns Pflicht Login

Och, menno, jetzt muss ichs suchen.....
Nee, doch nicht, das war curlftpfs, sorry.
 
Zuletzt bearbeitet:
das sind für mich alles unbekannte Variablen, soll heißen ich verstehe nur Bahnhof... Ich weiß weder was busybox ist noch curl oder curlftps is.
Wenn irgendwo ein Link zu der gesamten Erklärung vorhanden ist bitte hier einstellen, ich könnt ja suchen aber nach was denn..?
 
Also, ohne freetz brauchst du zusätzliche Kommandos für das Skript.
Die busybox liefert davon eine ganze Menge, mach dich doch mal schlau darüber.
Nur curl hat sie nicht, darum gehts.
Und ohne curl läuft halt das Skript nicht.
Dann eben, ohne freetz gehts nicht, so.
 
Ok, hab ich nicht drüber nachgedacht, sorry. Bin da halt auch angemeldet.

Hier das Script (welches ich für mich allerdings nochmals minimal angepasst habe, zum Beispiel die "Zufallszeit", oder eh mit Raute auskommentierte Teile):
Code:
#!/bin/sh

#DEBUG=1

LOGIN="***"
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-900
DELAY=$(($(hexdump -n 2 -e '"%u"' /dev/urandom | tr -d '-' ) % 900 + 1))
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>&1
fi

[[ $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 )"

[[ $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></span>" \
        && { echo "Login successful" ; /sbin/write_log "DynDNS - Web-Login successful" 4 ; } \
        || { echo >&2 "Login failed" ; /sbin/write_log "DynDNS - Web-Login failed" 2;exit 1 ; }

exit 0

Einfach Benutzername und Passwort eintragen, auf der Festplatte des NAS als zum Beispiel "dyndnsweblogin.sh" ablegen, ausführbar machen, ggf. testen, und zum Schluss in der crontab eintragen.

EDIT:
Tipps:

1. Wenn man die Raute vor "DEBUG=1" entfernt, bekommt Ihr beim Testen etwas mehr Informationen in der Konsole angezeigt.
2. Zum Testen am Besten auch die Zeile "sleep $DELAY" mit einer Raute auskommentieren.
 
Zuletzt bearbeitet:
Der LOGIN ist überigens case sensitivity im Gegensatz zum "echten" Browserlogin.
 
Zuletzt bearbeitet:
Erstmal meinen Dank, dass ich hier für das Thema sensibiliert wurde, denn vor 3 Tagen kam auch bei mir "die Mail" an.

Da ich vor längerer Zeit einen Lynx-Script für eine Dellmont-Guhaben-Abfrage gemacht habe (natürlich ganz kurz bevor man dort anfing, dazu Mails zu versenden), war ein Dyn.com-Login eine leichte Aufgabe. Da ich leider das Versenden einer Seite nicht per integriertem Mailversand hinbekommen habe, löste ich das einfach mit blat.

Mehrere Windows-Installer, die OpenSSL benötigen findet man hier: http://invisible-island.net/lynx/#installers
Eine fertige SSL-Version habe ich hier gefunden: http://lynx-win32-pata.sourceforge.jp/

Im Anhang findet Ihr Batch (für die Aufgabenplanung z.B.) und Script.
 

Anhänge

  • Lynx-Script&Batch.zip
    715 Bytes · Aufrufe: 12
Hallo zusammen,

dass Thema scheint ja einige zu interessieren.
Lynx ist auch eine Lösung, aber man kann das
Shell Skript auch im Windows laufen lassen.
Lösung: cygwin, bei welchem man im Setup curl hinzufügt.
Das cron von Windows nennt sich Scheduled Task Planer (Aufgabenplanung).
Viele Wege führ'n nach Rom.

Viel Spaß beim Weiterbasteln !

Gruß Gerry
 
Es wird keine Push-Email versendet

Hallo!
Ich habe das Script zur Aktualisierung meines DynDNS-Accounts getestet.

Allerdings erhalte ich keine Email über den Push-Service, die die Ausführung des Scripts dokumentiert.
Die Debug-Ausgabe zur Ausführung des Scripts enthält den Fehler "(23) Failed writing body". Ist das ein Indiz für den fehlerhaften Email-Versand?
Code:
root@net1-FB7570:/var/tmp/flash# sh -x autoupdate_dyndns.sh 
+ LOGIN=<dyndns-account>
+ PASSWORD=<dyndns-passwort>
+ EMAIL=<Email-Empfänger Push-Service>
+ 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=https://account.dyn.com/entrance/
+ CHKURL=https://account.dyn.com/
+ [[ ]]
+ DST=/dev/null
+ awk BEGIN {srand(); print int (rand() * 3000) }
+ DELAY=2523
+ echo Wait '2523' sec...
Wait '2523' sec...
+ dirname /tmp/.dynsdns.cookies.txt
+ [[ -w /tmp ]]
+ [[ -s /tmp/.dynsdns.cookies.txt ]]
+ [[ -w /tmp/.dynsdns.cookies.txt ]]
+ rm -f /tmp/.dynsdns.cookies.txt
+ [[ ]]
+ curl -b /tmp/.dynsdns.cookies.txt -c /tmp/.dynsdns.cookies.txt -Ikso /dev/null -A "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)" --url https://account.dyn.com/entrance/
HTTP/1.1 200 OK
Date: Sun, 01 Sep 2013 08:59:20 GMT
Server: Apache
Cache-control: no-cache
Content-Type: text/html; charset=ISO-8859-1
Expires: Sun, 01 Sep 2013 08:59:20 GMT
Set-Cookie: id=c8VaNdeaRVT7z+u5JAWOXCg7Vdk; domain=account.dyn.com; path=/; expires=Sat, 30-Nov-2013 08:59:20 GMT
Accept-Ranges: none
Vary: Accept-Encoding

+ [[ ]]
+ curl -b /tmp/.dynsdns.cookies.txt -c /tmp/.dynsdns.cookies.txt -kso - -A "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)" --url https://account.dyn.com/entrance/
+ grep -m 1 multiform
+ cut -d' -f 6
+ VALUE=0757F751B25321F3217C1CF7BBB0450D13
+ [[ ]]
+ curl -b /tmp/.dynsdns.cookies.txt -c /tmp/.dynsdns.cookies.txt -d username=<dyndns-account> -d password=<dyndns-passwort> -d iov_id -d multiform=0757F751B25321F3217C1CF7BBB0450D13 -e https://account.dyn.com/entrance/ -kso /dev/null -A "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)" --url https://account.dyn.com/entrance/
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>302 Found</TITLE>
</HEAD><BODY>
<H1>Found</H1>
The document has moved <A HREF="https://account.dyn.com/">here</A>.<P>
</BODY></HTML>
+ [[ ]]
+ curl -b /tmp/.dynsdns.cookies.txt -c /tmp/.dynsdns.cookies.txt -e https://account.dyn.com/entrance/ -kso - -A "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)" -H Accept-Language: en-gb --url https://account.dyn.com/
+ grep -qE <span>(Welcome|Hi)&nbsp;<b><dyndns-account></b></span>
(23) Failed writing body
+ echo Login successful
Login successful
+ exit 0

Frage:
Was ist die Ursache für diesen Fehler?
Wie kann man diesen beheben?

THX
 
Meinst du, der Syntax des curl-Befehls ist fehlerhaft?
 
Nein, die Meldung deutet darauf hin, dass nicht genug Platz zum Speichern ist.
Manchmal gibt es aber auch Meldungen, die in die falsche Richtung zeigen. In diesem Fall liegt es an der Option -q von grep. Grep beendet sich damit sofort, wenn es das gesuchte Muster gefunden hat. Damit wird auch die Pipe geschlossen, in die curl den Rest schreiben will, daher kommt diese Meldung.
Man könnte das vermeiden, indem man das Ergebnis erst in eine Datei schreibt und dann diese mit grep untersucht. Oder man kann grep ohne -q aufrufen und statt dessen die Ausgabe auf /dev/null umlenken.
 
Danke für diese Erklärung.

Eine "grundsätzliche" Frage möchte ich an dieser Stelle noch stellen:
Welchem Zweck dient der Parameter "EMAIL"?
Dieser Parameter kommt nur an einer einzigen Stelle im Coding vor:
Code:
	|| { echo >&2 "Login failed" ; mail send -s "Dyndns web login failed !" -f "[email protected]" -t \"$EMAIL\" ; exit 1 ; }

Der Parameter -s definiert das "Subject", aber was ist mit den Parametern -f und -t?
In der Manpage finde ich:
-f Read in the contents of your mbox (or the specified file) for processing; when you quit mail writes undeleted messages back to this file.

Aber nichts zu -t.
Und in welchem Zusammenhang steht das mit dem Push-Service von AVM?

THX
 
Das mail Programm auf der Box ist nicht das mail Programm, das auf einem Unix System die lokale Mailbox liest.
Ich vermute mal, dass beim Aufruf "mail -?" oder "mail" ohne Parameter eine kurze Erläuterung kommt. Ich vermute weiterhin, dass -f für "From" und -t für "To" steht, als Absender und Empfänger der Email.
Der Zweck davon ist, dass man per Email benachrichtigt wird, wenn die Anmeldung nicht funktioniert, damit man dies von Hand nachholen kann.
 
Das würde Sinn ergeben... ich muss das mal auf meiner FB7570 prüfen, welche Parameter der Aufruf von "mail" anbietet.
Was ich noch nicht nachvollziehen kann ist der Backslash beim Parameter -t:
Code:
mail send -s "Dyndns web login failed !" -f "[email protected]" -t \"$EMAIL\"

Und eine Frage schließt sich an:
Kann der Mail-Versand unter Verwendung des AVM Push-Service funktionieren, wenn beim Parameter -t (=to) eine andere Email-Adresse eingetragen ist als in der Konfiguration des Push-Service?
 
Was ich noch nicht nachvollziehen kann ist der Backslash beim Parameter -t:
Code:
mail send -s "Dyndns web login failed !" -f "[email protected]" -t \"$EMAIL\"
Der Backslash führt dazu, dass die Anführungszeichen Teil des Parameters von -t sind, im Gegensatz zu den Anführungszeichen beim Parameter -f, die nicht Bestandteil des Parameters und in diesem Fall unnötig sind.
Da ich das Programm nicht verwende, kann ich nicht sagen, ob die Anführungszeichen notwendig, sinnvoll oder schädlich sind.

Kann der Mail-Versand unter Verwendung des AVM Push-Service funktionieren, wenn beim Parameter -t (=to) eine andere Email-Adresse eingetragen ist als in der Konfiguration des Push-Service?
Das lässt sich mit einem einfachen Aufruf an der Kommandozeile überprüfen.

Noch eine Anmerkung zur Absender: home.de ist eine registrierte Domain, falls die Email nicht zustellbar ist, wird eine Rückmeldung an home.de geschickt, was vermutlich unerwünscht ist.
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.