[Frage] DynDNS bei FRITZ!Box 7270 hinter KabelRouter

gindler1988

Neuer User
Mitglied seit
4 Feb 2012
Beiträge
51
Punkte für Reaktionen
0
Punkte
6
Hallo liebe Gemeinde. Früher hatte ich meine FRITZ 7270 direkt am Netz und DynDNS eingerichtet. Nun habe ich meine FRITZ hinter einem KabelRouter im IP-Client-Modus. Da mir der KabelRouter keine möglichkeit eines DynDNS bietet muss es irgendwie anderst gehen. Auf einem PC ein Miniprogramm installieren bringt nichts wenn die IP gewechselt wird während dieser aus ist. Nun habe ich in einem Forum gelesen das ich mit einer bestimmten URL der FRITZ beibringen kann nicht die Interne sondern die externe IP zu melden. Als ich dies ausprobieren wollte stellte ich fest das die Funktion komplett aus der Oberfläche getilgt ist solange ich den Clientmodus aktiviert habe. Gibts da ne möglichkeit diesen wieder herauszukitzeln?

Für eine KabelFRITZ gabs mal ne anleitung an versteckte Menüs heranzukommen.

Was ratet ihr mir?
 
@KunterBunte.

Ich suche auch die Möglichkeit, meine öffentliche IP mit der Fritzbox,
weiter zu geben. FB hinter TC7200U.

Bei mir steht:

Diese Option ermöglicht den Zugang auf die FRITZ!Box aus dem Internet.
Zugang haben alle FRITZ!Box-Benutzer, denen im Menü "System / FRITZ!Box-Kennwort"
das Recht "Zugang auch aus dem Internet erlaubt" eingeräumt wurde.

Dieses Recht, "Zugang auch aus dem Internet erlaubt" wird mir nicht eigeräumt.

Wie kann ich erreichen, dass die FB das tut? Mit "Wie ist meine IP"?

E.L.G.
 
@KunterBunter
danke für den Link, sowas in der art habe ich mir vorgestellt. Über diesen link (abgeändert mit IP) bin ich auf die DynDNS Seite meiner FRITZ gekommen. Leider aber ist dort alles grau hinterlegt. Hast du mir noch einen Tipp wie ich nun die werte freischalte?

Ich habe mir schon überlegt irgendwie die Zugangsart umzustellen damit die FRITZ DynDNS von alleine frei gibt, aber ich weiß nicht ob es da eine geeignete einstellung gibt. Ist einfach die FRITZ hinter TC7200.
 
Ich habe mir schon überlegt irgendwie die Zugangsart umzustellen damit die FRITZ DynDNS von alleine frei gibt, aber ich weiß nicht ob es da eine geeignete einstellung gibt. Ist einfach die FRITZ hinter TC7200.
Erste Frage in so einer Situation ist für mich immer: Was macht der TC7200 denn eigentlich auf der WAN-Seite ? IPv6, IPv4, "echten" DualStack-Betrieb, oder DS-Lite ? In Abhängigkeit von dieser Antwort kann man dann erst weiter nachdenken. Es ist auch irgendwie wichtig, welche Dienste Du mit diesem DynDNS-Eintrag dann erreichen willst ...

Z.B.:
Warum betreibst Du die Box nicht als Router hinter dem Technicolor-Router ? Damit hast Du erstens Dein internes Netz aus dem Würgegriff des Providers befreit (wenn Du nur noch das LAN der Fritz!Box nimmst) und kannst andererseits wesentlich mehr Features der Fritz!Box nutzen.

Allerdings bringt Dir das bei der DynDNS-Problematik nur etwas, wenn Dein Anschluß mit IPv6 läuft. Dann kann sich die Fritz!Box einen eigenen "öffentlichen" IPv6-Präfix für ihre Clients zulegen und auch für sich selbst eine entsprechende Adresse z.B. über MyFritz registrieren. Läßt dann das TC7200 den Traffic zu diesem "Subnetz" passieren, ist zumindest die Fritz!Box per IPv6 aus dem Internet erreichbar. Ob das allerdings das TC7200 überhaupt kann, kann ich mangels Kenntnissen zu diesem Gerät nicht sagen.

Bei reinem IPv4-Betrieb sieht die Fritz!Box dann aber auch nur die Adresse des LANs hinter dem TC7200 als ihre "externe" Adresse. Das DynDNS funktioniert da also nur dann, wenn Du einen DynDNS-Anbieter findest, der die aktuelle IPv4-Adresse nicht anhand irgendwelcher Angaben in einer URL setzt, sondern dazu die Adresse, von der der Update-Request ausgeht, verwendet (und wenn Du kein DS-Lite mit CGN hast). Dann mußt Du dem TC7200 noch die Fritz!Box als "exposed host" beibiegen können ... das könnte - je nach (Access-)Provider - auch eine weitere Hürde sein; einige lassen die Kunden überhaupt nicht an die Einstellungen dieser Geräte.
 
Erste Frage in so einer Situation ist für mich immer: Was macht der TC7200 denn eigentlich auf der WAN-Seite ? IPv6, IPv4, "echten" DualStack-Betrieb, oder DS-Lite ? In Abhängigkeit von dieser Antwort kann man dann erst weiter nachdenken. Es ist auch irgendwie wichtig, welche Dienste Du mit diesem DynDNS-Eintrag dann erreichen willst ...

Naja, WAN kann man es nicht wirklich nennen, denn der TC7200 hat vier Gigaports, macht den DHCP und die FRITZ läuft lediglich als IP-Client. Im TC7200 habe ich auch eine Statische Portweiterleitung auf die FRITZ eingetragen. Was ich erreichen will ist einfach das ich eine DynDNS adresse habe. Bisher muss ich bei Sipgate einloggen, schauen was ich zur Zeit für eine Ip habe, dann gebe ich in meiner adresszeile ein z.B. https://5.125.41.21:450 und ich sehe meine FRITZ!box. Diese ermöglicht mir dann u.a. ein Fremdstarten meiner PCs auf die ich dann wiederrum über TeamViewer darauf zugreifen kann.

Warum betreibst Du die Box nicht als Router hinter dem Technicolor-Router ? Damit hast Du erstens Dein internes Netz aus dem Würgegriff des Providers befreit (wenn Du nur noch das LAN der Fritz!Box nimmst) und kannst andererseits wesentlich mehr Features der Fritz!Box nutzen.

Die FRITZ hat "nur" vier LAN-Ports. Ich habe aber eine 150MBit-Leitung. Wenn ich also will das die FRITZ der Router ist dann habe ich eine Drosselung in Netzwerk auf 100MBits max.




Ich habe gesehen das es jemand geschafft hat via TelNet ein Script in seine FRITZ zu laden die sich intervallmäßig die Öffentliche IP besorgt und dann an die Update-URL weitermeldet. Sowas ist wahrscheinlich das Richtige für mich. Nur das dieses Script noch von DynDNS auf selfhost.eu umgeschrieben werden muss.
Die Update-Url habe ich mir mal schon zusammengebastelt: https://carol.selfhost.de/update?username=XXXXX&passwort=XXXXX So zumindest laut http://cms.selfhost.de/cgi-bin/selfhost?p=faq&show=59

Originalscript:
#!/bin/sh
USER="foo"
PASS="bar"
DOMAIN="mydomain.dyndns.org"
SLEEPTIME=3600
MAXSLEEPCOUNT=240

IP_ADDR_RE="[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}"

r=`ping -c 1 $DOMAIN 2> /dev/null`
if ([ $? ] && [ "$r" != "" ])
then
registered=`echo $r | grep -o 'from .* ' | grep -o $IP_ADDR_RE`
echo $registered currently registered
else
registered="0.0.0.0"
echo No IP address registered
fi

sleepcount=0

while :; do
current=$(wget -O - http://checkip.dyndns.org|sed s/[^0-9.]//g)
[ "$current" != "$registered" ] && {
wget -O /dev/null http://$USER:[email protected]/nic/update?hostname=$DOMAIN &&
registered=$current
sleepcount=0
}
echo sleeping $SLEEPTIME seconds
sleep $SLEEPTIME

sleepcount=$((sleepcount+1))

if ([ "$sleepcount" -ge "$MAXSLEEPCOUNT" ])
then
echo To many sleepcounts ... will call update alltough IP has not changed
`wget -O /dev/null http://$USER:[email protected]/nic/update?hostname=$DOMAIN`
sleepcount=0
fi
done &

Wer kann mir beim Umschreiben helfen?
 
Naja, WAN kann man es nicht wirklich nennen, denn der TC7200 hat vier Gigaports, macht den DHCP und die FRITZ läuft lediglich als IP-Client. Im TC7200 habe ich auch eine Statische Portweiterleitung auf die FRITZ eingetragen. Was ich erreichen will ist einfach das ich eine DynDNS adresse habe. Bisher muss ich bei Sipgate einloggen, schauen was ich zur Zeit für eine Ip habe, dann gebe ich in meiner adresszeile ein z.B. https://5.125.41.21:450 und ich sehe meine FRITZ!box. Diese ermöglicht mir dann u.a. ein Fremdstarten meiner PCs auf die ich dann wiederrum über TeamViewer darauf zugreifen kann.
Das beantwortet ja schon 2 Fragen.
Du hast offenbar bereits probiert und entweder ein CGN mit funktionierendem PCP (kann das der TC7200 überhaupt ?) oder ganz simpel eine öffentliche IPv4-Adresse auf dem TC7200.
Und Du möchtest wohl nicht nur die Fritz!Box an sich erreichen, sondern auch die WOL-Funktion benutzen. Wenn Du dann auf die "aufgeweckten" Geräte zugreifen willst, laufen diese dann hinter dem TC7200 oder hinter der 7270 ? Im ersten Fall müßtest Du diese wohl alle "zu Fuß" in der 7270 konfigurieren, da der DHCP-/DNS-Server der Box ja nicht zuständig ist und max. die Daten aus irgendwelche vorbeifliegenden ARP-Paketen ziehen könnte.

Die FRITZ hat "nur" vier LAN-Ports. Ich habe aber eine 150MBit-Leitung. Wenn ich also will das die FRITZ der Router ist dann habe ich eine Drosselung in Netzwerk auf 100MBits max.
Ok, das kann ich - in Grenzen - nachvollziehen, das mit den 150MBit hatte ich aber noch nicht gelesen.
Soll die Fritz!Box dann wirklich nur als "kleiner" Computer herhalten und nur das DynDNS und WOL machen ? Da würde ich eher eine zusätzliche Investition in einen Raspberry Pi o.ä. empfehlen. Wenn die 7270 noch etwas anderes macht, ist das u.U. aber auch ein schlechter Rat. Ansonsten ist ein RasPi stromsparender und flexibler ... wenn man sich damit befassen will.

Hat denn der TC7200 überhaupt kein DynDNS oder ist nur Dein bevorzugter DynDNS-Anbieter dort nicht auswählbar ?

Die Update-Url habe ich mir mal schon zusammengebastelt: ...
Wenn Du diese URL schon erfolgreich ausprobiert hast, ist ja das Problem mit dem Ermitteln der IP-Adresse seitens des DynDNS-Anbieters schon gelöst, ich kann ja keine Adresse in der URL entdecken. Dann wird offenbar automatisch die Absender-Adresse verwendet.

Wer kann mir beim Umschreiben helfen?
Ernsthaft ?
Wo kommst Du denn nicht weiter mit dem Skript ?

Obwohl ich auch nicht auf den ersten Blick verstehe, warum die Hauptschleife im Hintergrund ausgeführt werden soll (das ist das "&" hinter dem "done") ...

Du brauchst doch eigentlich erst einmal nur die Angaben zum Nutzernamen/Kennwort (Zeile 2/3), der Domain (Zeile 4) und zu den Update-URLs (Zeilen 25 und 37) auszutauschen (auch wenn die Nutzung eines "fremden" myip-Servers (Zeile 23) nicht die feine englische Art ist, vielleicht hat selfhost.eu da ja auch einen entsprechenden Service) ... wo liegt das Problem ?

Wenn Du das Skript so gar nicht verstehen solltest, ist es vielleicht eine gute Idee, das als erstes einmal zu untersuchen ... wie willst Du sonst bei Problemen irgendwelche Fehler finden ?
Wenn Du es dann verstanden hast, solltest Du noch einmal über die Zeiten (Prüfung 1x pro Stunde, spätestens nach 10 Tagen dann "Zwangsupdate") nachdenken ... hängt ja auch davon ab, was Dein Provider sonst noch so bei der Adressvergabe macht.
 
@PeterPawn Danke schon mal das du dir so viel Zeit für mich nimmst. Ich hatte mal vor Jahren bei einführung von IPv6 Probleme mit diesem Service in dem IPv6 seiten schlicht nicht erreichbar waren. Deshalb hat mir damals KabelBW IPv6 abgeschalten und ich habe einen Anschluss der komplett auf einer öffentlichen IPv4 Adresse basiert :D

Die FRITZ hängt an einem Port hinter dem TC7200. Alle PCs hängen auch direkt am TC7200. Nur ein paar andere Geräte bei denen es nicht auf Geschwindigkeit ankommt hängen aus Portmangel noch an der FRITZ. Die notwendigen Geräte sind alle händisch in der FRITZ eingetragen. Wie gesagt, es klappt ja auch alles, nur das ich eben jedes mal erst bei Sipgate nachforschen muss welche IP ich gerade zuhause habe.

Die FRITZ hat noch die Aufgabe das WLAN bereit zu stellen, dient als Druckerserver und als VoIP-Adapter.
DynDNS beherrscht das TC7200 vielleicht schon, aber in der von KabelBW kastrierten Firmware gibt es weder DynDNS-Service allgemein, noch das WLAN, noch WOL.


So wie das Script jetzt ist scheint es ja die öffentliche IP Adresse zu ermitteln und dann an den DynDNS-Dienst zu übermitteln. Allerdings ist das bei mir alles mehr raten als wissen. Mir hat es noch nie jemand erklärt wie das alles läuft. Ich habe mir einfach mal Linux auf den PC geschmissen und Windows heruntergeworfen und mich selber dazu gezwungen mich damit auseinander zu setzen. Und mithilfe diverser Seiten lerne ich mich immer mehr im Shell ein. Ich bin froh das ich inzwischen die Grundbefehle inne hab, aber dieses Script ist immernoch meilenweit über meinem Verständnis. Ich kann es zwar ansehen und erahnen was es tut aber schreiben könnte ich es nie. Deshalb bitte ich darum das mir jemand die richtige Update-URL baut und dann das Script abändert. Zugangsdaten eingeben und das alles via TelNet hochladen schaff ich dann schon ;-)

PS: Hat mir jemand einen Tipp wo ich mir solche Script und Shell Kenntnisse gut beibringen kann?
 
@PeterPawn Danke für den Tipp mit dem Raspberry Pi. Davon habe ich noch nie gehört.
 
Wie oft ändert sich deine externe (öffentliche) IPv4-Adresse bei KabelBW? Ist es so, dass man bei selfhost.de seinen account alle 30 Tage per login bestätigen muss bzw. in einem bestimmten Zeitintervall ein ddns-update mit einer geänderten externen IPv4-Adresse machen muss? Wenn ja, dann solltest Du das in deinem Script evtl. berücksichtigen oder evtl. zu einem anderen ddns-Provider wechseln. Oder hast Du einen kostenpflichtigen account bei selfhost.de?
 
So wie das Script jetzt ist scheint es ja die öffentliche IP Adresse zu ermitteln und dann an den DynDNS-Dienst zu übermitteln. Allerdings ist das bei mir alles mehr raten als wissen. Mir hat es noch nie jemand erklärt wie das alles läuft.
Das ist hier sicherlich auch etwas fehl am Platz. Eine Auflistung der Art: "In Zeile X passiert das und das ..." ist entweder kurz und unvollständig oder sehr schnell ausufernd.
Beispiel:
In Zeile 13 wird die Standard-Ausgabe (stdout) des Ping-Kommandos aus Zeile 10 (echo $r) nach allen Zeilen durchsucht, die irgendwo die Zeichenfolge "from", gefolgt von einem Leerzeichen und anschließend beliebigem Text enthalten (erstes grep -o). Diese Zeilen werden dann (auch wenn in diesem Fall nur eine einzelne zu erwarten ist) ab dem Beginn von "from" ausgegeben und weiterverarbeitet (vom zweiten grep -o). Dieses sucht jetzt in den verbliebenen Zeilen nach Text, der aus 4 Gruppen von jeweils 1-3 Ziffern mit einem Punkt dazwischen besteht (das Muster wurde in Zeile 8 der Variablen 'IP_ADDR_RE' zugewiesen), das *könnte* eine IP-Adresse sein. Das muß zwar nicht immer so passen, für die erste Ziffer in einer Dreiergruppe ist eigentlich nur der Wertebereich 0 bis 2 gültig und der verwendete Ausdruck passt auch auf "345.567.890.123", aber das ist hier (in der ping-Ausgabe) ja nicht zu erwarten. Das Ergebnis dieser Suche nach einer Zahlenfolge wird dann (wieder ab der ersten gefundenen Ziffer) der Variablen 'registered' zugewiesen.

Deshalb bitte ich darum das mir jemand die richtige Update-URL baut und dann das Script abändert. Zugangsdaten eingeben und das alles via TelNet hochladen schaff ich dann schon
Das mit den eigenen Gehversuchen in einer Linux-Shell ist ja schon einmal mehr, als viele bereit sind zu investieren.
Wenn Du nicht nur ein "Rezept" haben willst, kannst Du gerne konkrete(!) Fragen per PM stellen ... ansonsten hilft ja auch einfach mal etwas zu probieren.
Wenn man das Skript mit "(ba)sh -x scriptname" startet, wird die Ausführung jeder einzelnen Zeile wunderbar protokolliert ... einmal das, was die Shell aus dem Code entnimmt und ausführt und (solange da nichts umgeleitet wird) auch das Ergebnis jedes einzelnen Kommandos. Wenn Du dann noch die diversen Umleitungen von Fehlerausgaben nach /dev/null (immer da, wo '2>/dev/null' im Skript auftaucht) für den Anfang einfach entfernst, siehst Du auch sofort, wenn irgendein Kommando Probleme hat.

PS: Hat mir jemand einen Tipp wo ich mir solche Script und Shell Kenntnisse gut beibringen kann?
Kommt auf die Sprache an ... wenn Du ausreichende Englisch-Kenntnisse hast, ist der "abs-guide" (Advanced Bash Scripting) ein guter Ansatz. Dann noch eine entsprechende Shell nebenher, um das Gelernte auszutesten und etwas Zeit ... dann klappt's auch mit der Shell.
Das ist zwar nicht 1:1 auf die (weit weniger mächtige) Shell der Busybox in einer Fritz!Box übertragbar, aber da die ash der Busybox ein Subset der Möglichkeiten der Bash implementiert, muß man nur damit leben, daß bestimmte Konstruktionen bei ash so nicht funktionieren. Meines Wissens gibt es jedenfalls nichts in der ash, was nicht entsprechend auch in bash funktioniert ... umgekehrt ist das anders.
Andere Shell-Implementierungen wie ksh oder csh bringen Dich - zumindest im Hinblick auf Embedded Devices mit Linux - eher nicht weiter.

Eine gute deutsche Anleitung für die "Programmierung" (manche halten Skripte immer noch nicht für "richtige" Programme, ich gehöre allerdings nicht dazu) von Shell-Skripten kenne ich auch nicht. Solltest Du da etwas finden, nehme ich eine entsprechende URL gerne auch entgegen, damit ich sie im Bekanntenkreis weiterempfehlen kann.
 
Also, ich habe mir en RedBull geschnappt und einfach mal die Murmel eingeschalten. Das Sript und die URL so wie ich sie verstehe sehen demnach so aus: (Zugangsdaten geschwärzt^)

Code:
#!/bin/sh
SLEEPTIME=3600
MAXSLEEPCOUNT=240

IP_ADDR_RE="[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}"

r=`ping -c 1 $DOMAIN 2> /dev/null`
if ([ $? ] && [ "$r" != "" ])
then
registered=`echo $r | grep -o 'from .* ' | grep -o $IP_ADDR_RE`
echo $registered currently registered
else
registered="0.0.0.0"
echo No IP address registered
fi

sleepcount=0

while :; do
current=$(wget -O - [url]http://checkip.dyndns.org|sed[/url] s/[^0-9.]//g)
[ "$current" != "$registered" ] && {
wget -O /dev/null https://carol.selfhost.de/update?username=XXXXX&password=YYYYY&myip=$current &&
registered=$current
sleepcount=0
}
echo sleeping $SLEEPTIME seconds
sleep $SLEEPTIME

sleepcount=$((sleepcount+1))

if ([ "$sleepcount" -ge "$MAXSLEEPCOUNT" ])
then
echo To many sleepcounts ... will call update alltough IP has not changed
`wget -O /dev/null https://carol.selfhost.de/update?username=XXXXX&password=YYYYY&myip=$current`
sleepcount=0
fi
done &

Die Antwort die ich bekommen habe war:
Code:
No IP address registered
#
# wget: bad address 'checkip.dyndns.org'
wget: not an http or ftp url: [url]https://carol.selfhost.de/update?username=XXXXX[/url]
sleeping seconds

Und dann alle 30sek:
Code:
BusyBox v1.19.3 (2012-05-21 13:40:41 CEST) multi-call binary.

Usage: sleep [N]...

Pause for a time equal to the total of the args given, where each arg can
have an optional suffix of (s)econds, (m)inutes, (h)ours, or (d)ays

wget: bad address 'checkip.dyndns.org'
sleeping seconds


Dann dachte ich mir ich specke das ganze Script mal ab:
Code:
#!/bin/sh
#FreeDNS updater script

UPDATEURL="https://carol.selfhost.de/update?username=XXXXX&password=YYYYY"
DOMAIN="gindler1.selfhost.eu"

registered=$(nslookup $DOMAIN|tail -n2|grep A|sed s/[^0-9.]//g)

  current=$(wget -q -O - [url]http://checkip.dyndns.org|sed[/url] s/[^0-9.]//g)
       [ "$current" != "$registered" ] && {                           
          wget -q -O /dev/null $UPDATEURL 
          echo "DNS updated on:"; date
  }

Anwort:
Code:
tst.sh: line 1: cript: not found
nslookup: can't resolve 'gindler1.selfhost.eu': Name or service not known
wget: bad address 'checkip.dyndns.org'
tst.sh: line 12: syntax error: unexpected end of file (expecting "}")

Irgendwie haben beide Scripts wohl Probleme mit der checkip url.
Gebe ich direkt im Ubuntu Shell wget -O - http://checkip.dyndns.org|sed s/[^0-9.]//g ein dann bekomme ich meine IP Adresse aber schön angezeigt.

Was mache ich denn falsch?
 
Zuletzt bearbeitet:
Was mache ich denn falsch?
Das wget-Problem löst Du am besten, indem Du anstelle von 'wget' auf der Box 'httpsdl' benutzt. Das wget der Busybox in der Version von AVM kennt kein HTTPS.

Es geht aber noch weiter ... aber erst, wenn das Unentschieden bei SUI-ECU perfekt ist. :)

Nun ist es doch kein Unentschieden mehr ... Hopp Schwiiz.

Welche Version des Skripts willst Du denn nun verwenden ?

Mach doch mal bitte einen kompletten Code-Abschnitt mit der derzeitigen Version (ggf. wget durch httpsdl ersetzen, die Parameter können bleiben) ...
 
Zuletzt bearbeitet:
Also ein Problem habe ich nun schon gefunden. Bitte nicht hauen.........FRITZ hatte falsches Gateway und somit garkein inet. :( Sorry
Problem 2: Gebe ich die Update-URL direkt in den Browser dann aktualisierts, aber weder über shell noch über busybox, weder mit wget noch mit httpsdl, ich schafe kein Update
 
FRITZ hatte falsches Gateway und somit garkein inet.
Das war naheliegend, da ja keine Adressen aufgelöst werden konnten ... weder beim nslookup noch beim wget. Beim Ping im ersten Skript konnte es nicht gehen, da hast Du die Zuweisung zu DOMAIN gleich mit wegoptimiert.

weder über shell noch über busybox, weder mit wget noch mit httpsdl, ich schafe kein Update
Ich stehe jetzt etwas auf dem Schlauch ... wo probierst Du es denn ? Auf der Box oder im Ubuntu ? Was ist für Dich der Unterschied zwischen Shell und Busybox ?

Wenn Du die Ausgabe des httpsdl mit '-O -' auf stdout legst, solltest Du die Antwort des Servers auf Deinen Update-Request sehen ... bitte posten.

Also im Telnet-Client auf der Box:
Code:
httpsdl -O - https://...
und die Ausgabe dann hierher, aber bitte in einem Code-Block anstelle eines Quote. Das liest sich wegen des anderen Font-Spacings einfacher.
 
Telnet meldet:
Code:
# httpsdl -O- https://carol.selfhost.de/update?username=MEINBENUTZERNAME&password=MEINPASSWORT&myip=5.158.152.76
[4]   Done                       httpsdl -O- https://carol.selfhost.de/update?username=MEINBENUTZERNAME
[3]   Done                       httpsdl -O- https://carol.selfhost.de/update?username=MEINBENUTZERNAME
# status=401
ok

Ubuntu Shell meldet
Code:
andreas@andreas-pc02:~$ httpsdl -O- https://carol.selfhost.de/update?username=MEINBENUTZERNAME&password=MEINPASSWORT&myip=5.158.152.76
[3] 3907
[4] 3908
[1]   Exit 127                https://carol.selfhost.de/update?username=MEINBENUTZERNAME                                                       
[2]   Fertig                  password=MEINPASSWORT                                                                                    
andreas@andreas-pc02:~$ httpsdl: Befehl nicht gefunden.                                                                              
[1]-  Exit 127                https://carol.selfhost.de/update?username=MEINBENUTZERNAME                                                       
[2]+  Fertig                  password=MEINPASSWORT

sowie:
Code:
andreas@andreas-pc02:~$ wget -O- https://carol.selfhost.de/update?username=MEINBENUTZERNAME&password=MEINPASSWORT&myip=5.158.152.76
[1] 3948
[2] 3949
andreas@andreas-pc02:~$ --2014-06-15 20:54:48--  https://carol.selfhost.de/update?username=MEINBENUTZERNAME
Auflösen des Hostnamen »carol.selfhost.de (carol.selfhost.de)«... 82.98.87.18, 2a02:2e0:3fc:52:0:62:57:12
Verbindungsaufbau zu carol.selfhost.de (carol.selfhost.de)|82.98.87.18|:443... verbunden.
HTTP-Anforderung gesendet, warte auf Antwort... 200 OK
Länge: nicht spezifiziert [text/html]
In »»STDOUT«« speichern.

    [<=>                                                                                         ] 0           --.-K/s              status=401
    [ <=>                                                                                        ] 11          --.-K/s   in 0s      

2014-06-15 20:54:48 (139 KB/s) - auf die Standardausgabe geschrieben [/11]
 
Zuletzt bearbeitet:
Ok, auf der Kommandozeile hat das Ampersand eine spezielle Bedeutung. Wenn das - wie in Deinem Fall - in einer URL enthalten ist, muß es durch '\&' "maskiert" werden.

Edit: Um die Ausgabe zu sehen, mußt Du zwischen "-O" und dem Dash für stdout ein Leerzeichen lassen ...

Edit 2: Um das aus dem Ubuntu heraus zu testen, mußt Du schon weiterhin das wget anstelle von httpsdl nehmen.
 
Zuletzt bearbeitet:
ES LÄUFT.

Code:
#!/bin/sh
SLEEPTIME=3600
MAXSLEEPCOUNT=240

IP_ADDR_RE="[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}"

r=`ping -c 1 $DOMAIN 2> /dev/null`
if ([ $? ] && [ "$r" != "" ])
then
registered=`echo $r | grep -o 'from .* ' | grep -o $IP_ADDR_RE`
echo $registered currently registered
else
registered="0.0.0.0"
echo No IP address registered
fi

sleepcount=0

while :; do
current=$(wget -O - http://checkip.dyndns.org|sed s/[^0-9.]//g)
[ "$current" != "$registered" ] && {
httpsdl -O /dev/null https://carol.selfhost.de/update?username=MEINBENUTZERNAME\&password=MEINPASSWORT\&myip=$current &&
registered=$current
sleepcount=0
}
echo sleeping $SLEEPTIME seconds
sleep $SLEEPTIME

sleepcount=$((sleepcount+1))

if ([ "$sleepcount" -ge "$MAXSLEEPCOUNT" ])
then
echo To many sleepcounts ... will call update alltough IP has not changed
`httpsdl -O /dev/null https://carol.selfhost.de/update?username=MEINBENUTZERNAME\&password=MEINPASSWORT\&myip=$current`
sleepcount=0
fi
done &

Nur macht er jetzt ca 10 Aktualisierungen pro minute und bringt andauernd diese Meldung. Außerdem ist das Script wieder abgeschalten wenn ich die Box reboote. Wie mache ich die Aktualisierung auf ca 30min und die Meldung aus? Ist Sleeptime im Script der Intervall? Ist das ms? Dann müsste er es aber nur jede minute machen und net alle 5sek !?
 
Zuletzt bearbeitet:
\&myip=5.158.152.76 wurde eine aktualisierung erfolgreich durchgeführt.
Wenn ich die FAQ auf der selfhost.eu-Seite nicht falsch interpretiere, kannst Du (solltest Du m.E. auch) den myip-Parameter auch weglassen, dann wird wohl die Adresse, von der der Request kommt, angenommen.

Wenn Du die zweite Version des Skripts weiter nehmen willst, solltest Du an einigen Stellen (z.B. beim nslookup) noch eine - wenigstens minimale - Fehlerbehandlung einbauen. Das hatte der Autor des ersten Skripts ganz gut im Griff.
 
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.