Skip to content

Instantly share code, notes, and snippets.

@WallaceTan
Created July 5, 2018 07:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save WallaceTan/ff9190695b69fbf82678cdb99d635063 to your computer and use it in GitHub Desktop.
Save WallaceTan/ff9190695b69fbf82678cdb99d635063 to your computer and use it in GitHub Desktop.
#!/bin/sh
NOIP_USERNAME="[your-username-at-noip.com]"
NOIP_PASSWORD="[your-password-at-noip.com]"
NOIP_DDNS_HOSTNAME="[your-hostname].ddns.net"
NOIP_UPDATE_URL="https://dynupdate.no-ip.com/nic/update"
CACHED_IP_FILE=/tmp/cached_ip
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/1 [your-email]'"
PUBLIC_IP=`$WGET_CMD https://checkip.amazonaws.com/`
DDNS_IP=`/usr/bin/nslookup $NOIP_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:]]*$//'`
NOIP_UPDATE_CMD="$WGET_CMD $WGET_USER_AGENT --http-user=$NOIP_USERNAME --http-password=$NOIP_PASSWORD $NOIP_UPDATE_URL?hostname=$NOIP_DDNS_HOSTNAME&myip=$PUBLIC_IP"
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 [$NOIP_DDNS_HOSTNAME]"
/usr/bin/logger -t $SYSLOG_TAG "$logmsg"
else
logmsg="Updating [$NOIP_DDNS_HOSTNAME] to new IP [$PUBLIC_IP]"
/usr/bin/logger -t $SYSLOG_TAG "$logmsg"
fi
echo $logmsg
echo $NOIP_UPDATE_CMD
$NOIP_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