[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