Hallo!
Mittels Cron-Job wird der Befehl
/etc/init.d/rc.opendd cron
regelmäßig abgesetzt.
Im Syslog finde ich diesen Eintrag:
Code:
root@FB7570:/var/mod/root# cat /var/log/syslog | grep open
Aug 30 14:22:01 FB7570 daemon.info opendd[8349]: -- running OpenDD 0.7.9 in normal mode
Aug 30 14:22:01 FB7570 daemon.info opendd[8349]: main() : getting my ip address : 91.89.xxx.xxx
Aug 30 14:22:01 FB7570 daemon.info opendd[8349]: getdyndnshostnames() : no need to update <mydyndns>.selfip.com with 91.89.xxx.xxx
Aug 30 14:22:01 FB7570 daemon.err opendd[8349]: main() : No hostname(s) to update
Dies interpretiere ich so, dass OpenDD richtig erkennt, dass sich meine Public-IP nicht geändert hat und folglich auch keine Aktualisierung meines DynDNS-Accounts notwendig ist.
Von DynDNS.com die Infomail bekomme, dass mein Account deaktiviert wird, wenn ich nicht selbigen nicht (manuell) aktualisiere.
Ich dachte, OpenDD genau diese Aktivierung übernehmen.
Anmerkung:
Die Option "Spätestens nach 25 Tagen updaten (hierfür sollte crond aktiviert sein)." ist aktiviert.
Die Datei /tmp/flash/opendd/opendd.ip ist zuletzt am 21.08. geändert worden.
Code:
root@FB7570:/var/mod# ls -l /tmp/flash/opendd
-rw-r--r-- 1 root root 14 Aug 21 04:00 opendd.ip
-rw-r--r-- 1 root root 0 Jan 1 2000 opendd.pem
Ich habe mittels dem Befehl
Code:
root@FB7570:/var/mod#echo 127.168.178.1 >/tmp/flash/opendd/opendd.ip
root@FB7570:/var/mod#modsave flash
den Inhalt der Datei /tmp/flash/opendd/opendd.ip manuell editiert und damit auf einen Wert gesetzt, der ungleich meiner aktuellen Public-IP ist.
Dennoch wird nach Aufruf von /etc/init.d/rc.opendd cron im Syslog geschrieben, dass OpenDD meine aktuelle Public-IP richtig erkannt hat und deshalb keine Aktualisierung macht.
Hier mal der (nach meinem Verständnis) relevante Abschnitt des Scripts /etc/init.d/rc.opendd:
Code:
run() {
echo -n "Running $DAEMON_LONG_NAME ... "
if modlib_check_running; then
echo 'already running.'
exit 0
fi
if [ "$OPENDD_ENABLED" != "yes" ]; then
echo 'is disabled.'
exit 0
fi
if [ ! -x "$(which $DAEMON_BIN)" ]; then
echo "binary not found, skipped."
exit 1
fi
modlib_config
chmod 600 /mod/etc/$DAEMON.conf
NEW_IP=$(get_ip)
if [ -z "$NEW_IP" ]; then
echo 'failed.'
exit 1
fi
if [ "$OPENDD_FORCE_UPDATE" == "yes" ]; then
OLD_IP="$(cat /tmp/flash/opendd/opendd.ip 2>/dev/null)"
if [ "$OLD_IP" != "$NEW_IP" ]; then
rm -rf /tmp/flash/opendd/opendd.ip
else
find /tmp/flash/opendd/ -name opendd.ip -mtime +25 -exec rm -rf {} ';'
if [ ! -e /tmp/flash/opendd/opendd.ip ]; then
update_ip 127.168.178.1
sleep 90
fi
fi
if [ ! -e /tmp/flash/opendd/opendd.ip ]; then
echo "$NEW_IP" >/tmp/flash/opendd/opendd.ip
modsave flash >/dev/null
fi
fi
update_ip $NEW_IP
# return-value of opendd is always 0
echo 'done.'
}
Die Variablen
"$OPENDD_ENABLED" und
"$OPENDD_FORCE_UPDATE"
steuern den Ablauf des Scripts?
Mit anderen Worten:
Falls "$OPENDD_FORCE_UPDATE" nicht auf "yes" gesetzt ist, dann wird die Public-IP auch nicht aktualisiert.
Frage:
Wo werden diese Variablen gesetzt?
Der Aufruf von
Code:
root@FB7570:/var/mod# echo $OPENDD_ENABLED
root@FB7570:/var/mod# echo $OPENDD_FORCE_UPDATE
zeigt, dass die Variablen keinen Wert enthalten.
THX