AW: Wie Dyndns überwachen, Fritzbox hinter Fritzbox
Ich habe den Bash nochmal laufen lassen, direkt nach dem löschen der Logdatei
Den Output habe ich aus dem DOS-Fenster komplett rauskopiert, also mit der ECHO-Ausgabe.
Soll ich die Alles-OK Meldungen mal nummerieren, damit man weiß wo er genau herläuft ?
Edit: habe das gerade noch getestet. Beim 1.Mal kommt durch die 3. Echo-OK Zeile, und beim 2. Aufruf durch die 2. ECHO-OK Zeile.
Ich mache auch noch mal ein Freetz-Neustart wenn gerade kein Traffic ist.
+ ping -c 1 xx.dyndns.tv
+ sed -n 1p
+ sed -e s/(//g -e s/)//g
+ cut -d -f3
+ cut -d : -f1
+ DYNIP=84.63.xx.xx
+ [ -z 84.63.xx.xx ]
+ [ 84.63.xx.xx = 84.63.xx.xx ]
+ [ -f /var/media/ftp/uStor01/DynUpdateCheck.log ]
+ echo 2012-02-07 19:28:29 - DYN-IP ist:84.63.xx.xx die Host-IP ist:84.63.xx
.xx alles OK!
2012-02-07 19:28:29 - DYN-IP ist:84.63.xx.xx die Host-IP ist:84.63.xx.xx al
les OKroot@fritz:/var/mod/root#
@Skywalker:
Der 5 Minuten Zyklus ist evtl. etwas übertrieben, ist beim Testen aber angenehmer, da man nicht so lange warten muß ;-)
Wenn alles läuft kann man das ja noch runtertakten. Das sollte mit dem Logfile aber nichts zu tun haben.
AW: Wie Dyndns überwachen, Fritzbox hinter Fritzbox
Ich kann immer noch nicht nachvollziehen wo die letzte Zeile her kommen soll " ... alles OK" ???
"...alles OK" ohne Ausrufezeichen gibt es doch im ganzen Script nicht, nur 3mal "..alles OK!".
Hier nochmal das Script, zur Kontrolle:
Code:
#!/bin/sh
############################## config - Bereich ######################################################
### Usernamen, PW und Dyndns-Adresse eintragen ############
USERNAME="name"
PASSW="passwort"
DYNADDI="dyn.dyndns.org"
LOGPFAD=/var/media/ftp/uStor01/DynUpdateCheck.log # SpeicherOrt des LogFile
MAXLOGSIZE="100" # max Logfilegroesse in KB
### Dyn-Dienst hier eintragen, 3 Moeglichkeiten - "dyndns" oder "no-ip" oder "dnsomatic" ############
DYNDIENST="dyndns"
#### wenn E-Mail-Benachrichtigung gewuenscht,
## dann Zugangsdaten hier eintragen
EMAIL="no" # und hier "yes" eintragen
FROMMAIL="sender@gmx.de" # E-Mail Versender
TOMAIL="empfaenger@gmx.de" # E-Mail-Empfänger
MAILSRV="mail.gmx.net" # MAIL-SMTP-Server
PWMAIL="password" # Passwort vom Mailkonto
############################### config Ende ###############################################################
#############################################################################################################
DATUM=`date +%Y-%m-%d\ %H:%M:%S`
HOSTIP=$(wget -q -O - http://myip.dnsomatic.com)
[ -z $HOSTIP ] && HOSTIP=$(wget -q -O - http://www.whatismyip.org)
[ -z $HOSTIP ] && HOSTIP=`wget -q -O - http://checkip.dyndns.org | grep IP | expr \`awk '{print $6}'\` : '\([0-9.]*\)'`
sleep 1
[ $DYNDIENST = "dyndns" ] && URL="http://$USERNAME:$PASSW@members.dyndns.org/nic/update?hostname=$DYNADDI&myip=$HOSTIP"
[ $DYNDIENST = "dnsomatic" ] && URL="http://$USERNAME:$PASSW@updates.dnsomatic.com/nic/update?hostname=all.dnsomatic.com&myip=$HOSTIP"
[ $DYNDIENST = "no-ip" ] && URL="http://$USERNAME:$PASSW@dynupdate.no-ip.com/nic/update?hostname=$DYNADDI&myip=$HOSTIP"
if [ ! -z $HOSTIP ]; then
DYNIP=$(ping -c 1 "$DYNADDI" | sed -n 1p | sed -e 's/(//g' -e 's/)//g' | cut -d ' ' -f3 | cut -d ':' -f1)
if [ -z $DYNIP ]; then
echo "$DATUM - keine DYN-IP bekommen. Updatepruefung kann nicht ausgefuehrt werden. " >> $LOGPFAD
else
if [ $DYNIP = $HOSTIP ]; then
if [ -f $LOGPFAD ]; then
LOGGROESSE=$(du -k $LOGPFAD | cut -f 1 )
sleep 1
if [ $MAXLOGSIZE -le $LOGGROESSE ]; then
if [ $EMAIL = "yes" ]; then
mailer \
-s "DynUpdateCheck max Logfilegroesse erreicht - Logfile wird geloescht" \
-d "$LOGPFAD" \
-f $FROMMAIL \
-t $TOMAIL \
-m $MAILSRV \
-a $FROMMAIL \
-w $PWMAIL
sleep 15
fi
echo "$DATUM - DYN-IP ist:$DYNIP die Host-IP ist:$HOSTIP alles OK!" > $LOGPFAD
fi
[ $MAXLOGSIZE -gt $LOGGROESSE ] && echo "$DATUM - DYN-IP ist:$DYNIP die Host-IP ist:$HOSTIP alles OK!" >> $LOGPFAD
else
echo "$DATUM - DYN-IP ist:$DYNIP die Host-IP ist:$HOSTIP alles OK!" >> $LOGPFAD
fi
else
echo "$DATUM - DYN-IP ist:$DYNIP die Host-IP ist:$HOSTIP ein Update wird durchgefuehrt!" >> $LOGPFAD
UPDATE=$(wget -q -O - "$URL")
echo "$UPDATE" > /tmp/DynTMP.log
sleep 2
MELDUNG=$(cut -d' ' -f 1 /tmp/DynTMP.log)
if [ $MELDUNG = "good" ]; then
echo "$DATUM - $UPDATE Dyn-Update ist erfolgt - Script Ende" >> $LOGPFAD
if [ $EMAIL = "yes" ]; then
mailer \
-s "Dynamic DNS Probleme - DynUpdate ist erfolgt Meldung: $UPDATE" \
-f $FROMMAIL \
-t $TOMAIL \
-m $MAILSRV \
-a $FROMMAIL \
-w $PWMAIL
fi
else
echo "$DATUM - Dyn-Update war nicht erfolgreich." >> $LOGPFAD
if [ $EMAIL = "yes" ]; then
mailer \
-s "Dynamic DNS Probleme - DynUpdate war nicht erfolgreich Meldung: $UPDATE" \
-f $FROMMAIL \
-t $TOMAIL \
-m $MAILSRV \
-a $FROMMAIL \
-w $PWMAIL
fi
fi
fi
fi
else
echo "$DATUM Keine Host-IP bekommen! Eventuell nicht online?" >> $LOGPFAD
fi
Außerdem kann die Logfilegröße nicht "0" sein, wenn das Logfile nicht vorhanden ist dann wird die Größe nicht geprüft
und ansonsten steht immer was drin.
Code:
.....
if [ -f $LOGPFAD ]; then
LOGGROESSE=$(du -k $LOGPFAD | cut -f 1 )
Edit:
Habe mir gerade deine letzten log's noch mal angesehen.
Der erste ist nach dem manuellen löschen des Logfile - da wird die Größe nicht berechnet, weil kein Logfile vorhanden ist.
Beim 2. Durchlauf hat der logfile eine Größe von "0" (was normalerweise gar nicht geht).
Weil beim ersten Durchlauf das passieren sollte:
Code:
if [ -f $LOGPFAD ]; then
#das hier wird nicht ausgeführt (wegen "-f" = falsch)
else
[B] echo "$DATUM - DYN-IP ist:$DYNIP die Host-IP ist:$HOSTIP alles OK!" >> $LOGPFAD[/B]
fi
Das fett geschriebene wird ausgeführt (demzufolge wird das was in den Ausführungszeichen steht in den Logfile geschrieben),
somit kann der Logfile nicht mehr 0 Byte groß sein.
Aber bei dir wird nichts in den Logfile geschrieben - warum?
Hänge bitte dein Script mal hier an. (ohne config-Teil)
AW: Wie Dyndns überwachen, Fritzbox hinter Fritzbox
Das Script stimmt überein, habe per filecompare verglichen.
Zunächst hat es ja auch funktioniert, blieb dann aber bei ca. 20k stehen.
Nachdem ich den File gelöscht habe, wurde wieder ein neuer angelegt, aber es blieb nach einigen Einträgen wieder hängen. Danach wurde dann nur noch ein leerer File angelegt.
Ich habe schon den cccam.log gelöscht, von wegen Platzmangel.
Ich werde aber erstmal ein Reboot machen, nicht das sich da etwas intern verrannt hat und wir suchen hier an der völlig falschen Stelle.
AW: Wie Dyndns überwachen, Fritzbox hinter Fritzbox
Das Script ist halt hier im Thread entstanden. Läuft aber auch auf anderen Boxen,
z.B. auf ner Dream, man brauch nur crond (und wget) um es zu starten.
Wobei ich gerade am basteln bin, es ohne crond zum laufen zu kriegen.
AW: Wie Dyndns überwachen, Fritzbox hinter Fritzbox
hab das Tool gestern auf meine Fritzbox gepackt, scheint super zu funktionieren. Ob es im Fehlerfall die dydns-Adresse aktualisiert, konnte ich allerdings noch nicht sehen
Aber Log-Datei wird korrekt geschrieben
AW: Wie Dyndns überwachen, Fritzbox hinter Fritzbox
Wow, das ist genau was ich brauche. Muss allerdings erst ein neues Image
mit wget installieren. Muss ich dann einfach das script ändern, auf den Stück
kopieren und dann die Box neu starten? Hab es noch nicht geschafft alle Seiten
hier zu lesen. Aber das wäre super.
Hab nämlich auch das Problem das sich dyndns oft nicht nach neu IP Vergabe
nicht aktualisiert.
AW: Wie Dyndns überwachen, Fritzbox hinter Fritzbox
wget kannst du einfach auf den Stick ins Root packen (steht hier irgendwo, wie man das macht, musst nur von busybox ne binary downloaden, in busybox umbenennen und auf den Stick kopieren).
Genau, das Script im oberen Teil (config) anpassen, auf den Stick kopieren und per Crontab regelmäßig ausführen lassen. Ich lasse es alle 30 Min laufen, theoretisch würde ja auch seltener reicher, je nach Bedarf.
AW: Wie Dyndns überwachen, Fritzbox hinter Fritzbox
Link ist nicht mehr aktiv.ist eine kleine Anleitung zu finden.
Nach dem kopieren des Scriptes auf den Stick/Box braucht du nicht neu zu starten - nur daran denken: Rechte auf 755 oder 777 setzen.
Wenn einer die Anleitung zur nachträglichen wget-installation (sollte natürlich auch funktionieren)
gefunden hat, den Link bitte mal posten - ist bestimmt für mehrere interessant.