DynDns Pflicht Login

Vielen Dank!

Der Zusammenhang mit der Verwendung von Backslash wäre damit geklärt.

Die nächste Frage ergibt sich im Zusammenhang mit der Ausgabe von mail --help:
Code:
root@FB7570:/var/tmp/flash# mail --help
Usage: mail {send|sendonce|enqueue} [MAILER_OPTION]...
       mail {process|config|list}

usage: mailer mailer [-s subject] -f from -t to -m mailserver [-a authname [-w passwd]] -i file(s) [-r] [-d attachfile(s)]
options:
  -?                 - print this help
  -s STRING          - subject. ("FRITZ!Box")
  -f STRING          - from. (NULL)
  -t STRING          - to. (NULL)
  -m STRING          - mailserver. (NULL)
  -a STRING          - authname. (NULL)
  -w STRING          - passwd. (NULL)
  -n                 - no SMTP-Auth. (NOTSET)
  -d STRING          - attachment(s). (NULL)
  -i STRING          - inline part(s) - add text file(s) here. (NULL)
  -r                 - use "multipart/related" if possible. (NOTSET)
  -l                 - SMTP with SSL or TLS. (NOTSET)
note: please use filename extensions if possible

Wie wird von dem Script auf die Einstellungen des AVM Push-Service zurückgegriffen? Macht das die FB automatisch mit Angabe der Parameter -f und -t?
Oder wäre es angebracht, die Paramter zur Authentifizierung am Mailserver mittels der Parameter -m, -a und -w zu machen?

Update:
Manuelle Ausführung des Kommandos nur mit Angabe der Parameter -f und -t funktioniert.

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.

Ist diese Coding-Modifikation korrekt:
Code:
curl -b $COOKIES -c $COOKIES -e "$POSTURL" -kso - -A \"$UA\" -H "Accept-Language: $AL" --url "$CHKURL" | \                             
           [COLOR="#FF0000"]grep -E "<span>(Welcome|Hi)&nbsp;<b>$LOGIN</b></span>" >/dev/null 2>&1 \[/COLOR]                                                    
        && echo "Login successful" \                                                                                                   
        || { echo >&2 "Login failed" ; mail send -s "Auto DynDNS web login fehlgeschlagen !" -f \"$MAILFROM\" -t \"$MAILTO\" ; exit 1 ;

Der Fehler
(23) Failed writing body
kommt mit diesem Coding zumindest nicht mehr.


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.


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.

In der Tat ist es so, dass der manuelle Aufruf
Code:
mail send -s "Auto DynDNS web login fehlgeschlagen !"
also ohne Verwendung der Parameter -f und -t funktioniert und eine Email mit dem Subject "Auto DynDNS web login fehlgeschlagen !" an den Empfänger gesendet wird, der im AVM Push-Service definiert ist.

THX
 
Zuletzt bearbeitet:
Hallo zusammen,

ich wollte das Skript aus dem ersten Post auf einer 7270v3 mit aktuellem Trunk auch mal testen - und es ist leider fehlgeschlagen.
Hier mal der Output:
Code:
+ DEBUG=1
+ LOGIN=meinDynLogin
+ PASSWORD=meinPW
+ EMAIL=meineAddi
+ 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/
+ [[ 1 ]]
+ DST=-
+ tr -d -
+ hexdump -n 2 -e "%u" /dev/urandom
+ DELAY=1639
+ echo Wait '1639' sec...
Wait '1639' sec...
+ dirname /tmp/.dynsdns.cookies.txt
+ [[ -w /tmp ]]
+ [[ -s /tmp/.dynsdns.cookies.txt ]]
+ [[ -w /tmp/.dynsdns.cookies.txt ]]
+ rm -f /tmp/.dynsdns.cookies.txt
+ [[ 1 ]]
+ echo DEBUG: Fetching initial headers to pre-load cookies...
DEBUG: Fetching initial headers to pre-load cookies...
+ curl -b /tmp/.dynsdns.cookies.txt -c /tmp/.dynsdns.cookies.txt -Ikso - -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: Fri, 27 Sep 2013 08:22:27 GMT
Server: Apache
Cache-control: no-cache
Content-Type: text/html; charset=ISO-8859-1
Expires: Fri, 27 Sep 2013 08:22:27 GMT
Set-Cookie: id=jinWJUr2A6Moht9aWcTSqEJ6AQs; domain=account.dyn.com; path=/; expires=Thu, 26-Dec-2013 08:22:27 GMT
Accept-Ranges: none
Vary: Accept-Encoding

+ [[ 1 ]]
+ echo DEBUG: Fetching UID...
DEBUG: Fetching UID...
+ grep -m 1 multiform
+ cut -d' -f 6
+ 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/
+ VALUE=27522DE30CF0FFBC83E8470CDDC8F8237E
+ [[ 1 ]]
+ echo DEBUG: Read UID as '27522DE30CF0FFBC83E8470CDDC8F8237E' - posting data...
DEBUG: Read UID as '27522DE30CF0FFBC83E8470CDDC8F8237E' - posting data...
+ curl -b /tmp/.dynsdns.cookies.txt -c /tmp/.dynsdns.cookies.txt -d username=meinDynLogin -d password=MeinPW -d iov_id -d multiform=27522DE30CF0FFBC83E8470CDDC8F8237E -e https://account.dyn.com/entrance/ -kso - -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>
+ [[ 1 ]]
+ echo DEBUG: Response received - verifying result...
DEBUG: Response received - verifying result...
+ grep -qE <span>(Welcome|Hi)&nbsp;<b>meinDynLogin</b></span>
+ 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/
+ echo Login failed
Login failed
+ mail send -s Dyndns web login failed !
+ exit 1
Kann jemand erkennen, was da schief läuft ?
Beste Grüße,

JD.
 
Zuletzt bearbeitet:
Irgendwie hat dyn die Seiten umgebaut, diese Woche habe ich schon 2x meinen Lynx-Script ändern müssen.

Dein Output "sagt" das auch:
Code:
<H1>Found</H1> [COLOR=#ff0000][B]The document has moved[/B][/COLOR] <A HREF="https://account.dyn.com/">here</A>.<P> </BODY></HTML>
 
Das Redirect mit 302 bedeutet das nicht zwangsläufig. Es ist üblich, nach einem POST ein Redirect zu senden, damit das POST nicht noch einmal ausgeführt wird, wenn jemand den Rückwärts-Knopf im Browser verwendet.

Die Meldung im Skript kommt ja auch nicht sofort nach dem Redirect, sondern nachdem die Seite neu gelesen wird und dort nach einem bestimmten Text gesucht wird.
 
Okay,

heißt daß, das

1. das Problem nicht nur bei mir besteht und
2. ich das "https://account.dyn.com/entrance/" im Script ggfs. durch ein "https://account.dyn.com/" ersetzen und neu testen sollte ?
 
dass ich das "https://account.dyn.com/entrance/" im Script ggfs. durch ein "https://account.dyn.com/" ersetzen und neu testen sollte ?

Du musst nicht zwangsläufig die URL ersetzen. Du brauchst eine URL, die unterschiedliche Inhalte liefert, je nach angemeldet oder nicht. Und dann brauchst Du einen Text, der nur dann vorkommt, wenn die Anmeldung erfolgreich war, und nicht bei Fehlern in der Anmeldung.
 
Also, im angemeldeten Zustand liefert die Seite u.A.
Code:
<span>Welcome&nbsp;<b>meinDynLogin</b></span>
,
im Script steht das:
Code:
grep -qE "<span>(Welcome|Hi)&nbsp;<b>$LOGIN</b></span>" \
Könnte das Script aufgrund eines nicht gefundenen "Hi"s der Ansicht sein, daß der Login fehlgeschlagen ist ?
 
Nein, die Konstruktion steht für "Welcome" oder "Hi".
Speichere das Ergebnis von curl mal ab und rufe grep mit der Datei auf. Wird das Suchmuster gefunden oder nicht? Wenn nicht, schau nach, woran es liegt. Vielleicht wurde eine Kleinigkeit am Text geändert, Leerzeichen oder was auch immer.

Ist das, was oben im Beitrag #42 steht, der echte Login-Name?
 
Okay,

hab' den Fehler gefunden: Blöderweise ist der Login-Name Case-sensitiv. Dass heißt, das bei Dyn bei der Account-Erstellung ein case-sensitiver Account-Name hinterlegt und dieser dann in der Zeile
Code:
<span>(Welcome|Hi)&nbsp;<b>$LOGIN</b></span>
nach dem Login auftaucht. Das "Problem" ist, daß auch ein klein geschriebener Username im Script erst mal auf keinen Fehler läuft, d.h. ich kann mich mit einem klein geschriebenen Usernamen erfolgreich anmelden, im Code der Seite taucht dann allerdings der case-sensitive Name auf. Und dieser wird dann evtl. (so wie bei mir) nicht gefunden.
Der Fehler
Code:
(23) Failed writing body
taucht bei mir allerdings auch noch auf.
Grüße,

JD.
 
habt Ihr denn auch bei usernamen nur den user Namen eingegeben anstatt der email Adresse
Man kann sich ja bei dyndns damit anmelden
Beispiel
[email protected]
oder nur
blaba

Im skript darf natürlich nicht die volle email als username eingetragen sein , weill nur den Name "blabla" erwartet wird

Hier funktioniert das skript noch
Code:
root@fritz:/var/mod/root# /tmp/dns.sh
success
root@fritz:/var/mod/root#

Code:
2013-09-29 13:12:34 [email protected]: Login failed
2013-09-29 13:15:16 blabla: Login successful

sorry war ein anderes skript
Mit dem hier gibts doch Probleme
Code:
root@fritz:/var/mod/root# /tmp/dns.sh
Wait '2966' sec...
HTTP/1.1 200 OK
Date: Sun, 29 Sep 2013 12:14:36 GMT
Server: Apache
Cache-control: no-cache
Content-Type: text/html; charset=ISO-8859-1
Expires: Sun, 29 Sep 2013 12:14:36 GMT
Set-Cookie: id=g4U/o8ic6GHy5ghWdhBZxJngwgU; domain=account.dyn.com; path=/; expires=Sat, 28-Dec-2013 12:14:36 GMT
Accept-Ranges: none
Vary: Accept-Encoding

<!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>
(23) Failed writing body
Login successful
 
Zuletzt bearbeitet:
Blöderweise ist der Login-Name Case-sensitiv. Dass heißt, das bei Dyn bei der Account-Erstellung ein case-sensitiver Account-Name hinterlegt
...
Das "Problem" ist, daß auch ein klein geschriebener Username im Script erst mal auf keinen Fehler läuft, d.h. ich kann mich mit einem klein geschriebenen Usernamen erfolgreich anmelden, im Code der Seite taucht dann allerdings der case-sensitive Name auf. Und dieser wird dann ... nicht gefunden.

Das soll wohl heißen, der Login-Name von DynDNS ist NICHT Case-sensitiv, das grep aber ist Case-sensitiv. Das lässt sich ändern, indem man grep mit der Option -i aufruft.
 
Das lässt sich ändern, indem man grep mit der Option -i aufruft.
Also das hier klappt:
Code:
grep -iqE "<span>(Welcome|Hi)&nbsp;<b>$LOGIN</b></span>" \
In der Tat unabhängig von Groß- oder Kleinschreibung.
Bliebe noch der 23er-Fehler ....
 
Zuletzt bearbeitet:
Entschuldigung, hatte ich übersehen.
Das hier
Code:
 grep -iE "<span>(Welcome|Hi)&nbsp;<b>$LOGIN</b></span>" >/dev/null 2>&1 \
läuft ohne Fehler.
Danke.
 
Hallo,

vielen Dank! Funzt hier mit busybox und "manuellem" curl perfekt, mußte nur zum Mailen "mailer" verwenden - und lasse mir auch eine pos Loginmeldung senden, kostet ja nix :)

Codeausschnitt:
Code:
/var/tmp/curl -b $COOKIES -c $COOKIES -e "$POSTURL" -kso - -A \"$UA\" -H "Accept-Language: $AL" --url "$CHKURL" | \
	   grep -E "<span>(Welcome|Hi)&nbsp;<b>$LOGIN</b></span>" >/dev/null 2>&1 \
	&& { echo "Login successful" ; mailer -s "Dyndns web login successfully !" -f "[email protected]" -t "$EMAIL" ; } \
	|| { echo >&2 "Login failed" ; mailer -s "Dyndns web login failed !" -f "[email protected]" -t "$EMAIL" ; exit 1 ; }

Grüße,
Henry
 
Hallo,

leider habe ich ein Problem bei der Einrichtung des Scripts in meiner FritzBox. Wahrscheinlich resultiert dies aus meinen kaum vorhandenen Linux Kenntnissen. Ich habe auch schon gegooglet allerdings habe ich keine Lösung für mein Problem gefunden.

Ich habe das Script angepasst und dann einfach ins Rudi Shell kopiert und Probelaufen gelassen. Das hat funktioniert. Dann habe ich in der Rudi Shell das kopieren der Datei nach /tmp/flash/dyndns.sh durchgeführt. Auch dieses hat geklappt, da ich unter Telnet mit cd /var/flash und dann ein ls die Datei sehen kann.

Nun wollte ich die Datei wie beschrieben mit chmod +x /tmp/flash/dyndns.sh ausführbar machen. Da kommt aber in der Rudishell keinerlei Bestätigung. Es bleibt einfach leer. Unter Telnet mit ls wird die Datei auch nicht grün angezeigt, was doch an sich bedeuten müsste, dass er diesen Befehl angewand hat. Weiß vllt jemand, woran das liegen könnte?

Danke

Joe82
 
Abend

Die meisten Kommandos liefern nichts (0, Null, Zero) zurück, wenn alles geklappt hat.
Nur wenn ein Fehler passiert, dann kriegst du die Fehlermeldung präsentiert.
EDIT1:
Code:
deepbase # echo $?
0
deepbase # ls /gipsnich ; echo $?
ls: /gipsnich: No such file or directory
1
Wenn du mit telnet ls eingeben kannst, warum nicht auch chmod +x /var/flash/dyndns.sh?

Und warum soll dir mit ls was grün angezeigt werden? Die farbige Ausgabe wird so erreicht: ls -la --color=auto
Versteh ich nicht.

EDIT2:
Desweiteren rate ich dir /var/tmp für Skripte zu benutzen.
In /var/flash befinden sich äußerst sensible Dateien.
...wenn da was schiefgeht...
Aber, ich will den Teufel mal lieber nicht an die Wand malen. :-Ö
:rolleyes:
 
Zuletzt bearbeitet:
Mich hat es einfach irritiert, dass man keinerlei Rückmeldung bekommt. Aber wenn das normal ist, bin ich zufrieden...

Danke schonmal.

Erzeugt das Script einen Eintrag im Syslog wenn es über Cron ausgeführt wurde? Nur damit man am Anfang mal schauen kann, ob es funktioniert.

LG
 
Erzeugt das Script einen Eintrag im Syslog wenn es über Cron ausgeführt wurde?
Ja, ungefähr so:
Code:
Jan 19 13:42:01 fritz cron.info crond[4466]: crond: USER root pid 7753 cmd /tmp/flash/dyndns.sh
Grüße,

JD.

Edit:

Du kannst noch probieren, Deinem Script einen Extra-Eintrag ins syslog zu spendieren, evtl. so:
Code:
curl -b $COOKIES -c $COOKIES -e "$POSTURL" -kso - -A \"$UA\" -H "Accept-Language: $AL" --url "$CHKURL" | \
	   grep -iE "<span>(Welcome|Hi)&nbsp;<b>$LOGIN</b></span>" >/dev/null 2>&1 \
	&& echo "Login successful"  [b]&& logger "DynDNS-LogIn successful"[/b] \
	|| { echo >&2 "Login failed" ; mail send -s "Dyndns web login failed !" ; exit 1 ; }
 
Zuletzt bearbeitet:
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.