NoPaste

/usr/local/bin/ddns

von smutbert

SNIPPET_TEXT:
  1. #!/bin/bash
  2. DDNS_DOMAIN="myhost.mydomain.xyz"
  3. DDNS_URL="http://abc"
  4.  
  5. WAIT_LOOP=1000
  6. WAIT_ERROR=100
  7. WAIT_SETTLE=10
  8.  
  9. ERROR_COUNT=0
  10. ERROR_MAX=5
  11.  
  12. SSH_PORT=2593
  13.  
  14. function log ()
  15. {
  16.         echo "<${2}>${1}"
  17. }
  18.  
  19. function refresh_ip ()
  20. {
  21.         log "Downloading ddns token." 6
  22.         if /usr/bin/wget -q --tries=1 -O /dev/null "${DDNS_URL}" ; then
  23.                 log "Download of ddns token successfull." 7
  24.                 return 0
  25.         else
  26.                 log "Download of ddns token failed." 3
  27.                 return 2
  28.         fi
  29. }
  30.  
  31. function check_ddns ()
  32. {
  33.         log "Checking name resolution." 7
  34.         if ssh -p ${SSH_PORT} ${DDNS_DOMAIN} ; then
  35.                 log "Name resolution is up to date and works." 7
  36.                 return 0
  37.         else
  38.                 log "Couldn't establish a connection." 4
  39.                 return 2
  40.         fi
  41. }
  42.  
  43. refresh_ip && sleep ${WAIT_SETTLE}
  44. while true ; do
  45.         if check_ddns ; then
  46.                 ERROR_COUNT=0
  47.                 sleep ${WAIT_LOOP}
  48.         else
  49.                 if refresh_ip ; then
  50.                         sleep ${WAIT_SETTLE}
  51.                         if check_ddns ; then
  52.                                 ERROR_COUNT=0
  53.                                 sleep ${WAIT_LOOP}
  54.                         else
  55.                                 ((ERROR_COUNT++))
  56.                                 sleep ${WAIT_ERROR}
  57.                         fi
  58.                 else
  59.                         ((ERROR_COUNT++))
  60.                         if [ ${ERROR_COUNT} -ge ${ERROR_MAX ] ; do
  61.                                 log "Too many errors, exiting." 3
  62.                                 exit 42
  63.                         else
  64.                                 sleep ${WAIT_ERROR}
  65.                 fi
  66.         fi
  67. done

Quellcode

Hier kannst du den Code kopieren und ihn in deinen bevorzugten Editor einfügen. PASTEBIN_DOWNLOAD_SNIPPET_EXPLAIN