# debug?
if [ $# -gt 0 ] ; then
- DOIT="echo "
+ DOIT="echo I: "
set -x
else
DOIT=""
# functions
die() {
- echo "$1" >&2
+ echo "E: $1" >&2
exit 1
}
warn() {
- echo "$1" >&2
+ echo "W: $1" >&2
}
# variables
USERNAME=sue
PASSWORD=hygCithOrs5
-HOSTNAME=$(hostname)
ZONE=dyn.example.com
-FQDN=$HOSTNAME.$USERNAME.$ZONE
NS=ns.example.com
-URL="http://dyndns.example.com/nic/update?hostname=$FQDN&myip="
+WEB=dyndns.example.com
+
+HOSTNAME=$(hostname)
+FQDN=$HOSTNAME.$USERNAME.$ZONE
+URL="http://$WEB/nic/update?hostname=$FQDN&myip="
+WGET="wget -q --tries=2 --timeout=5"
if [ -z "$HOSTNAME" ] ; then
die "No hostname found."
# data
-# alternative: -4 icanhazip.com, -6 icanhazip.com or ipv{4,6}.icanhazip.com
-NEWIPV4=$(wget -q -O- http://ipv4.wtfismyip.com/text)
-NEWIPV6=$(wget -q -O- http://ipv6.wtfismyip.com/text)
+NEWIPV4=$($WGET -O- http://ipv4.wtfismyip.com/text || $WGET -O- http://ipv4.icanhazip.com)
+NEWIPV6=$($WGET -O- http://ipv6.wtfismyip.com/text || $WGET -O- http://ipv6.icanhazip.com)
if command -v dig >/dev/null ; then
OLDIPV4=$(dig -t a +short $FQDN @$NS)
# old ipv4 gone
if [ -n "$OLDIPV4" -a -z "$NEWIPV4" ] ; then
- $DOIT wget -q -O/dev/null --user=$USERNAME --password=$PASSWORD "${URL}${OLDIPV4}&offline=yes"
- logger -t${0##*/} -perr -- "removing $FQDN / $OLDIPV4"
+ $DOIT $WGET -O/dev/null --user=$USERNAME --password=$PASSWORD "${URL}${OLDIPV4}&offline=yes"
+ $DOIT logger -t${0##*/} -perr -- "removing $FQDN / $OLDIPV4"
fi
# old ipv6 gone
if [ -n "$OLDIPV6" -a -z "$NEWIPV6" ] ; then
- $DOIT wget -q -O/dev/null --user=$USERNAME --password=$PASSWORD "${URL}${OLDIPV6}&offline=yes"
- logger -t${0##*/} -perr -- "removing $FQDN / $OLDIPV6"
+ $DOIT $WGET -O/dev/null --user=$USERNAME --password=$PASSWORD "${URL}${OLDIPV6}&offline=yes"
+ $DOIT logger -t${0##*/} -perr -- "removing $FQDN / $OLDIPV6"
fi
# new ipv4
if [ -n "$NEWIPV4" -a "$NEWIPV4" != "$OLDIPV4" ] ; then
- $DOIT wget -q -O/dev/null --user=$USERNAME --password=$PASSWORD "${URL}${NEWIPV4}"
- logger -t${0##*/} -perr -- "updating $FQDN to $NEWIPV4"
+ $DOIT $WGET -O/dev/null --user=$USERNAME --password=$PASSWORD "${URL}${NEWIPV4}"
+ $DOIT logger -t${0##*/} -perr -- "updating $FQDN to $NEWIPV4"
fi
# newipv6
if [ -n "$NEWIPV6" -a "$NEWIPV6" != "$OLDIPV6" ] ; then
- $DOIT wget -q -O/dev/null --user=$USERNAME --password=$PASSWORD "${URL}${NEWIPV6}"
- logger -t${0##*/} -perr -- "updating $FQDN to $NEWIPV6"
+ $DOIT $WGET -O/dev/null --user=$USERNAME --password=$PASSWORD "${URL}${NEWIPV6}"
+ $DOIT logger -t${0##*/} -perr -- "updating $FQDN to $NEWIPV6"
fi