#!/bin/bash DDNS_DOMAIN="myhost.mydomain.xyz" DDNS_URL="http://abc" WAIT_LOOP=1000 WAIT_ERROR=100 WAIT_SETTLE=10 ERROR_COUNT=0 ERROR_MAX=5 SSH_PORT=2593 function log () { echo "<${2}>${1}" } function refresh_ip () { log "Downloading ddns token." 6 if /usr/bin/wget -q --tries=1 -O /dev/null "${DDNS_URL}" ; then log "Download of ddns token successfull." 7 return 0 else log "Download of ddns token failed." 3 return 2 fi } function check_ddns () { log "Checking name resolution." 7 if ssh -p ${SSH_PORT} ${DDNS_DOMAIN} ; then log "Name resolution is up to date and works." 7 return 0 else log "Couldn't establish a connection." 4 return 2 fi } refresh_ip && sleep ${WAIT_SETTLE} while true ; do if check_ddns ; then ERROR_COUNT=0 sleep ${WAIT_LOOP} else if refresh_ip ; then sleep ${WAIT_SETTLE} if check_ddns ; then ERROR_COUNT=0 sleep ${WAIT_LOOP} else ((ERROR_COUNT++)) sleep ${WAIT_ERROR} fi else ((ERROR_COUNT++)) if [ ${ERROR_COUNT} -ge ${ERROR_MAX ] ; do log "Too many errors, exiting." 3 exit 42 else sleep ${WAIT_ERROR} fi fi done