Neuer Watchdog-Typ auf DynDNS-Basis
Wer den AVM DynDNS-Client auf der Box laufen hat, den wird die gute Nachricht freuen, daß auch in Fällen, in welchen
/bin/onlinechanged nicht aufgerufen bzw.
/var/run/onlinestat nicht aktualisiert werden - bei mir (7270_v1) z.B. meistens, wenn ich auf "Neu verbinden" klicke - offenbar zuverlässig trotzdem beim Neuverbinden DynDNS aktualisiert wird. Praktisch dabei ist, daß die Datei
/var/tmp/ddnsstat.txt dabei aktualisiert wird. Genauer gesagt, wird in die neue, temporäre Datei
/var/tmp/ddnsstatnew.txt geschrieben, dann
ddnsstat.txt gelöscht und schließlich
ddnsstatnew.txt umbenannt in
ddnsstat.txt. Das gibt uns die Möglichkeit, wiederum einen Watchdog auf
Inotifywait-Basis zu bauen, der das Löschen der Datei beobachtet und daraufhin die gewünschte Aktion auslöst. Bei mir hat das in den letzten Tagen auch in den Fällen funktioniert, in welchen
Onlinechanged und der
Onlinestat-Watchdog versagt haben, weil diese Aktionen gar nicht von AVM aufgerufen wurden. Das sieht dann so aus:
Code:
{
while true; do
[B]inotifywait -qq -e delete_self /var/tmp/ddnsstat.txt
ip_old="$ip"
ip=$(/usr/bin/get_ip)
[ "$ip" ] && [ "$ip" != "$ip_old" ] || continue[/B]
uptime > /var/tmp/uptime.txt
echo >> /var/tmp/uptime.txt
free >> /var/tmp/uptime.txt
mailer \
-s "New IP: $ip" \
-f "Fritz!Box <[email protected]>" \
-t "[email protected], [email protected]" \
-m "my.smtp.server" \
-a "user_name" \
-w "password" \
-i /var/tmp/uptime.txt
rm -f /var/tmp/uptime.txt
done
} &
Daß ich mir die letzte IP merke und die Aktion nur auslöse, wenn diese sich auch geändert hat, hängt damit zusammen, daß das Löschen und Umbenennen zweimal kurz hintereinander passieren, evtl. einmal beim Disconnect und dann nochmals beim Connect. Außerdem bin ich mir nicht sicher, ob nicht noch zu anderen Anlässen, z.B. wenn der Benutzer etwas an den DynDSN-Einstellungen ändert, die Datei neu erzeugt wird. So ist es sauberer.
SaschaBr, vielleicht willst Du das ja mal testen - und wen es sonst noch betrifft.
P.S.: Vorher auf die aktuelle Trunk-Version von
get_ip zu aktualisieren, macht Sinn, denn inzwischen ist
Onlinestat nicht mehr die Default-Methode, weil sie ja nicht immer die korrekte IP liefert. Die übrigen Methoden sind zuverlässiger, sofern anwendbar. Auf IP-Clients geht natürlich nur die externe IP-Abfrage, und da macht dann auch dieser Watchdog hier keinen Sinn, weil ja die Box keinen Connect und somit auch keine DynDNS-Anmeldung macht. Aber das war wohl klar, ich erwähne es nur für Leute, die hier neu hinzu kommen.
Edit 2011-12-28 15:20: überflüssige Zeile aus obigem Skript gelöscht (kam durch Copy/Paste aus dem alten Skript hier herein)