Skip to content

Instantly share code, notes, and snippets.

@WallaceTan
Last active January 27, 2022 03:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save WallaceTan/346997521394db294d1c121e955fab5a to your computer and use it in GitHub Desktop.
Save WallaceTan/346997521394db294d1c121e955fab5a to your computer and use it in GitHub Desktop.
#!/bin/sh
MY_DDNS_HOSTNAME="[your-hostname].asuscomm.com"
MYIP_FILE=/tmp/myip
SCRIPT_NAME=$(basename $0)
SCRIPT_PID=`/bin/pidof $SCRIPT_NAME`
SYSLOG_TAG="$SCRIPT_NAME[$SCRIPT_PID]"
PUBLIC_IP=`/usr/sbin/wget -O - --no-check-certificate --quiet https://checkip.amazonaws.com/`
DDNS_IP=`/usr/bin/nslookup $MY_DDNS_HOSTNAME ns1.asuscomm.com | tail -n1 | sed -e 's/Address 1: //'`
UPDATE_DDNS="/usr/sbin/ez-ipupdate -S dyndns -i eth0 -a $PUBLIC_IP -h $MY_DDNS_HOSTNAME -A 2 -s nwsrv-ns1.asus.com"
echo "PUBLIC_IP : '$PUBLIC_IP'"
echo "DDNS_IP : '$DDNS_IP'"
if [ ! -f "$MYIP_FILE" ];
then
echo "File not found: $MYIP_FILE"
echo $PUBLIC_IP > $MYIP_FILE
MYIP=$PUBLIC_IP
else
MYIP=`cat $MYIP_FILE`
echo "$MYIP_FILE : $MYIP"
fi
echo "MYIP : '$MYIP'"
if [ "$MYIP" == "$PUBLIC_IP" ] && [ "$PUBLIC_IP" == "$DDNS_IP" ];
then
logmsg="Public IP $MYIP did not change"
/usr/bin/logger -t $SYSLOG_TAG "$logmsg"
exit 0
else
logmsg="Public IP changed"
/usr/bin/logger -t $SYSLOG_TAG "$logmsg"
logmsg="Updating $MY_DDNS_HOSTNAME to new IP: $MYIP"
/usr/bin/logger -t $SYSLOG_TAG "$logmsg"
$UPDATE_DDNS
exit 1
fi
@troysmith31
Copy link

Hi, thanks for creating this script. I did find a small error.

You have to update the /tmp/myip (echo $PUBLIC_IP > $MYIP_FILE) file after line 37, $UPDATE_DDNS.

If not this script will continually run $UPDATE_DDNS after IP change.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment