Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- CUR_DATE=$(date "+%y-%m-%d %H:%M:%S")
- n=0
- y=0
- USERNAME="1"
- PASSWORD="2"
- DOMAIN="kathy.tk"
- IP_WAN=$(dig +short myip.opendns.com @resolver1.opendns.com)
- IP_DNS=$(dig "$DOMAIN" | grep IN | awk '{match($0,/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/); ip = substr($0,RSTART,RLENGTH); print ip}')
- LOG="/var/log/DNS_update.log"
- TMP="/tmp/DNS_update.tmp"
- THE_COMMAND=$(curl -s http://"$USERNAME":"$PASSWORD"@freedns.afraid.org/nic/update?hostname="$DOMAIN"&myip="$IP_WAN")
- MAKE_FILE() {
- FILE="$1"
- if
- [[ ! -f "$FILE" ]]; then
- touch "$FILE"
- echo "$CUR_DATE - Created $FILE" >> "$LOG"
- fi
- }
- CLEANUP_GOOD() {
- rm "$TMP"
- echo "$CUR_DATE - WAN update SUCCESS" >> "$LOG"
- }
- CLEANUP_BAD() {
- rm "$TMP"
- echo "$CUR_DATE - WAN update FAILED: Maximum loops allowed reached" >> "$LOG"
- }
- THE_LOOP() {
- MAKE_FILE "$LOG"
- MAKE_FILE "$TMP"
- until [[ "$y" -eq 10 ]] || [[ "$n" -eq 1 ]]; do
- if
- "$THE_COMMAND"; then
- echo "$CUR_DATE - Running script" >> "$LOG"
- else
- echo "$CUR_DATE - Script was not run: $THE_COMMAND failed" >> "$LOG"
- fi
- if
- [[ "$IP_WAN" == "$IP_DNS" ]]; then
- echo "$CUR_DATE - $IP_WAN matches $IP_DNS" >> "$LOG"
- let n++
- trap CLEANUP_GOOD exit 0
- else
- echo "$CUR_DATE - IP addresses do not match. Retrying.." >> "$LOG"
- let y++
- sleep 60
- fi
- done
- if
- [[ "$y" -eq 10 ]]; then
- trap CLEANUP_BAD exit 0
- fi
- }
- THE_LOOP
Add Comment
Please, Sign In to add comment