[Eisfair] [E1] Strato DynDNS vom EIS aus aktualisieren?
Armin Weinmann
news at die-weinmanns.de
So Sep 18 17:33:21 CEST 2016
Am 17.09.2016 um 23:43 schrieb Armin Weinmann:
> Wie kann ich denn sowas machen? Gibts da evtl schon irgendwelche Scripte?
>
> Mal die Datenkrake befragen, aber erst morgen ...
Habe was gefunden, sieht soweit ganz gut aus:
#!/bin/sh
################################
# Updates dyndns.com
# HHAW
# V.1.1
################################
update_interval=60
u_name=USERNAME
u_pass=PASSWORD
ddns_url=sub.domain.de #, z.B. mustermann.dnsalias.com##
################################
getExternalIp(){
################################
# externalIp=$(wget -q -O - http://checkip.dyndns.com|sed -n
"s/.*: //;s/<.*//;p")
#ipinfo.io reagiert weit schneller als checkip.dyndns.com
externalIp=$(wget -q -O - http://ipinfo.io/ip|sed -n "s/.*:
//;s/<.*//;p")
}
################################
getDdnsIp(){
################################
ddnsIp=`ping -c 1 -s 1 -w 1 $ddns_url|sed -n "s/).*//;s/.*(//p"`
}
################################
logDebugEvent(){
################################
# zur Fehlersuche
echo `date` "$*" >> /var/tmp/ddns.log
#dummy, falls echo auskommentiert:
sleep 1&
}
################################
logEvent(){
################################
logDebugEvent "$*"
}
################################
doOnUpdate() {
################################
logEvent "neue externe IP-Adresse: $new_ip"
## Put here whatever you want to do ....
#update DDNS-adress
#secret_url="http://$u_name:$u_pass@members.dyndns.org/nic/update?hostname=$ddns_url&myip=$new_ip"
secret_url="https://$u_name:$u_pass@dyndns.strato.com/nic/update?hostname=$ddns_url"
logDebugEvent $secret_url
#ddns_result="$(wget -q -O - $secret_url)"
ddns_result="$(curl --insecure $secret_url)"
logEvent "Update Result DDNS: $ddns_result"
if [ "$ddns_result" != "good $new_ip" ] ; then
# if error occured:
logEvent "ERROR: Update DDNS failed: next try in 10 min
#sleep 3600
sleep 600
fi
return
}
################################
# MAIN
################################
{
while true; do
#get current ddns-ip
getDdnsIp
old_ip=$ddnsIp
logDebugEvent "ddns: $old_ip"
#get current external IP
getExternalIp
new_ip=$externalIp
logDebugEvent "new_ip: $new_ip"
if [ "$old_ip" != "$new_ip" ] ; then
doOnUpdate
fi
sleep $update_interval
done
}
Bin nur noch am überlegen ob es besser ist das script einmal zu starten
und laufen zu lassen (wie starte ich das auf?) und die Minute intern
abzuwarten oder das Script für jeden Versuch neu aufzustarten (z. B. per
cron)
Armin
Mehr Informationen über die Mailingliste Eisfair