mikelieman icon

BASH script to update Google Domains DDNS

mikelieman | PRO | 03/02/21 08:11:46 AM UTC (Edited) | 0 ⭐ | 697 👁️ | Never ⏰ | []
Bash |

990 B

|

None

|

0 👍

/

0 👎

#!/usr/bin/bash
 
DDNS_HOSTNAME=example.com
 
SERVER=domains.google.com
GOOGLE_USER=
GOOGLE_PASS=
 
TEST_HOST=example.com
 
CURL_EXE="/usr/bin/curl -4 --user-agent curl -s -get"
 
CURRENT_IP=$(${CURL_EXE} https://${SERVER}/checkip)
DNS_IP=$(/usr/bin/host ${TEST_HOST} | grep "has address" | awk '{print $4}')
VPN_UP=$(ip link ls wgpia0 2>&1)
 
echo -n "Expected IPv4 addr: ${DNS_IP}, Current IPv4 addr: ${CURRENT_IP} - "
 
if [ "$DNS_IP" != "$CURRENT_IP" ]; then
 
    echo "IPv4 Addresses DO NOT match."
 
    if [ "${VPN_UP}" == "Device \"wgpia0\" does not exist." ]; then
 
        echo -n "VPN is not up.  Attempting to update ${SERVER}... "
        RETVAL=$(${CURL_EXE} https://${GOOGLE_USER}:${GOOGLE_PASS}@${SERVER}/nic/update?hostname=${DDNS_HOSTNAME})
        echo -n "${RETVAL} - "
        xmessage -display :0.0 "Your WAN IP address has changed and is now ${CURRENT_IP}."
 
    else
        echo -n "VPN is up.  Skipping - "
    fi # vpn_up
 
else
    echo -n "IPv4 addresses match - "
fi # dns != current
 
echo "Done."
 

Comments