/usr/local/bin/ddns
von smutbert- SNIPPET_TEXT:
-
- #!/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
Quellcode
Hier kannst du den Code kopieren und ihn in deinen bevorzugten Editor einfügen. PASTEBIN_DOWNLOAD_SNIPPET_EXPLAIN