Hallo.
Bei den Howto habe ich mal was dazu geschrieben:
http://www.bsdforen.de/forums/showthread.php?s=&threadid=148
Das eigentliche howto geht um IPFW und NATD, aber ein paar posts weiter unten steht dann:
Moin.
ddclient nutze ich zwar nicht, sondern ddup, aber das Prinzip sollte das gleiche sein wie Du das Problem lösen könntest. Hmm, könnte ja mal ein Howto schreiben von wegen dyndns und ddup. Ja, werde ich beizeiten mal machen.
Aber zu Deinem Problem.
Schreibe doch ein Script, welches via cronjob alle X Minuten aufgerufen wird, und überprüft ob die IP gleich geblieben ist, oder nicht. Wenn nicht, rufe ddclient auf und aktualisere dyndns, wenn doch, mache nichts.
Beispiel (für ddup, sollte aber bei ddclient nicht grossartig anders sein):
Legt unter /usr/local/etc/rc.d ein Skript mit dem Namen "020.ddup_start.sh" und dem Inhalt an:
#!/bin/sh
case "$1" in
start)
[ -x /etc/periodic/ddup_update.sh ] && /bin/sh /etc/periodic/ddup_update
.sh && echo -n ' dyndns_update_complete'
;;
*)
echo "Usage: `basename $0` {start|stop}" >&2
;;
esac
exit 0
Pack das Script mit dem Namen "ddup_udate.sh" nach /etc/periodic/
#!/bin/sh
#Variablen
host_net="deine.dynadresse.net"
host_com="deine.dynadresse.com"
host_org="deine.dynandresse.org"
interface="tun0"
email="deinemail@adresse.de"
oldfile="/var/log/dyndns/ddclient_OLD"
newfile="/var/log/dyndns/dddclient_NEW_temp"
# die nachfolgenden 2 anpassen an ddclient
ddclient_cmd="/usr/local/sbin/ddup"
ddclient_flags="--wildcard"
#bestehende Konfiguration in newfile packen
/sbin/ifconfig $interface | /usr/bin/grep inet > $newfile
if [ -r "$oldfile" ]; then
# wenn oldfile vorhanden haben wir infos
# wenn oldfile und newfile identisch, dann loesche newfile
/usr/bin/cmp -s $oldfile $newfile && /bin/rm -f $newfile
date
# wenn dem nicht so ist dann:
# -starte ddclient
# -sende eine email
# -yberschreibe oldfile mit newfile
if [ -r "$newfile" ]; then
$ddclient_cmd $ddclient_flags --host $host_net
$ddclient_cmd $ddclient_flags --host $host_com
$ddclient_cmd $ddclient_flags --host $host_org
/usr/bin/mail -s "$host_net $host_com $host_org update" $email < $newfile
/bin/mv -f $newfile $oldfile
fi
else
# der erste Lauf oder keinerlei Info
$ddclient_cmd $ddclient_flags --host $host_net
$ddclient_cmd $ddclient_flags --host $host_com
$ddclient_cmd $ddclient_flags --host $host_org
/usr/bin/mail -s "$host_net $host_com $host_org update" $email < $newfile
/bin/mv -f $newfile $oldfile
fi
Füge in Deine /etc/crontab folgendes ein:
*/5 * * * * root /etc/periodic/ddup_update.sh >> /var/log/dyndns/dyndns.log
Und lege unter das Verzeichnis "dyndns/" unter /var/log an (schreibrechte für root).
Dort werden Deine logs gelagert, wie ich sie oben im script angegeben hatte.