Skip to content

Instantly share code, notes, and snippets.

@WallaceTan
Last active May 1, 2019 00:29
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/af26e9708ac30cde9a6596f111679fb2 to your computer and use it in GitHub Desktop.
Save WallaceTan/af26e9708ac30cde9a6596f111679fb2 to your computer and use it in GitHub Desktop.
#!/bin/sh
DYNU_PASSWORD="[your-password-at-dynu.com]"
DYNU_PASSWORD_MD5=`/jffs/md5.sh $DYNU_PASSWORD`
DYNU_DDNS_HOSTNAME="[your-hostname].ddnsfree.com"
DYNU_UPDATE_URL="https://api.dynu.com/nic/update"
CACHED_IP_FILE=/tmp/cachedip
SCRIPT_NAME=$(basename $0)
SCRIPT_PID=`/bin/pidof $SCRIPT_NAME`
SYSLOG_TAG="$SCRIPT_NAME[$SCRIPT_PID]"
WGET_CMD="/usr/sbin/wget -O - --no-check-certificate --quiet"
WGET_USER_AGENT="--user-agent='$SCRIPT_NAME/v1+[your-email]'"
PUBLIC_IP=`$WGET_CMD https://checkip.amazonaws.com/`
DDNS_IP=`/usr/bin/nslookup $DYNU_DDNS_HOSTNAME 1.1.1.1 | tail -n1 | grep -oE ' ([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+) ' | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//'`
DYNU_UPDATE_CMD="$WGET_CMD $WGET_USER_AGENT $DYNU_UPDATE_URL?hostname=$DYNU_DDNS_HOSTNAME&myip=$PUBLIC_IP&password=$DYNU_PASSWORD_MD5"
echo "PUBLIC_IP : '$PUBLIC_IP'"
echo "DDNS_IP : '$DDNS_IP'"
if [ ! -f "$CACHED_IP_FILE" ];
then
echo "File not found: $CACHED_IP_FILE"
echo $PUBLIC_IP > $CACHED_IP_FILE
CACHED_IP=$PUBLIC_IP
else
CACHED_IP=`cat ${CACHED_IP_FILE}`
echo "$CACHED_IP_FILE : '${CACHED_IP}'"
fi
echo "CACHED_IP : '${CACHED_IP}'"
if [ "$CACHED_IP" == "$PUBLIC_IP" ] && [ "$PUBLIC_IP" == "$DDNS_IP" ];
then
logmsg="Public IP [$PUBLIC_IP] did not change for [$DYNU_DDNS_HOSTNAME]"
/usr/bin/logger -t $SYSLOG_TAG "$logmsg"
else
logmsg="Updating [$DYNU_DDNS_HOSTNAME] to new IP [$PUBLIC_IP]"
/usr/bin/logger -t $SYSLOG_TAG "$logmsg"
fi
echo $logmsg
echo $DYNU_UPDATE_CMD
$DYNU_UPDATE_CMD
echo $PUBLIC_IP > $CACHED_IP_FILE
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment