NSupdate bash script

#!/bin/bash
 
ZONE="johnburch.co.uk"
RECORD="spain"
FQDN="${RECORD}.${ZONE}."
NS="92.27.6.45"  # replace with your actual UK server IP or hostname
KEY="/home/john/.bind-ddns.key"
TTL=300
IP_FILE="/var/tmp/current_ip.txt"
CURRENT_IP=$(curl -s https://api.ipify.org)
# Skip update if IP hasn't changed
if [ -f "$IP_FILE" ] && grep -q "$CURRENT_IP" "$IP_FILE"; then
   echo "$(date) - IP unchanged: $CURRENT_IP"
   exit 0
fi
echo "$(date) - IP changed to $CURRENT_IP, updating..."
# Send dynamic DNS update
nsupdate -k $KEY <<EOF
server $NS
zone $ZONE
update delete $FQDN A
update add $FQDN $TTL A $CURRENT_IP
send
EOF
# Save the new IP
echo "$CURRENT_IP" > "$IP_FILE"
 
Save this script in /usr/local/bin/update-ddns.sh
Then setup a CRON job
 
*/5 * * * * /usr/local/bin/update-ddns.sh >> /var/log/ddns.log 2>&1