#!/bin/bash
#------------------------------------------------------------
# This is a modification of the script found here:
# https://github.com/TheGuywithTheHat/noip-ipv6-duc
# The original dev wrote it because the noip-duc
# tends to ignore ipv6 changes.
# I could not get it to work with curl (as in the original).
# So, I use lynx -dump and also toss errors into /dev/null
# to keep it running.
# I have probably introduced some bugs.
# This works for me. Might not for you. Original might be
# better for your purposes... who knows?
# I make no guarantees about the reliability of this script.
# -Phillip J Rhoades
#------------------------------------------------------------
interface="YOUR NETWORK INTERFACE (eth0,wps,etc)"
user="YOUR-NOIP-EMAIL-USERNAME"
pass="YOUR-NOIP-PASSWORD"
hostname="YOUR.NOIP.HOST.NAME"
url="https://dynupdate.no-ip.com/nic/update"
agent="Personal noip-ducv6/linux-v1.0"
lastaddr=''
update_ip () {
export addr=$(ip -6 addr show dev $interface | sed -e'/inet6/,/scope global/s/^.*inet6 \([^ ]*\)\/.*scope global.*$/\1/;t;d'|head -n1 2>/dev/null)
if [[ $lastaddr != $addr ]] && [[ $addr != "" ]]; then
echo "updating to $addr"
set -e
out=$(lynx -auth="$user:$pass" -dump "https://dynupdate.no-ip.com/nic/update?myipv6=$addr&hostname=$hostname" 2>/dev/null)
echo $out
if [[ $out == nochg* ]] || [[ $out == good* ]]; then
lastaddr=$addr
elif [[ $out == 911 ]]; then
echo "911 response, waiting 30 minutes"
sleep 25m
else
echo "FINE"
#exit 1
fi
fi
}
update_ip
while sleep 5m; do
update_ip
done
Comments