You are on page 1of 2

Open a terminal window and paste both scripts below.

Then using the script window change the UserID, Password, and hostname.
/system script
add name=HomingBeacon policy=\
ftp,reboot,read,write,policy,test,winbox,password,sniff,sensitive,api \
source="# HomingBeacon Main Dynamic DNS Update Script\r\
\n# Written by Sam Norris, ChangeIP.com\r\
\n# 20100728 Tested on RouterOS 4.9\r\
\n# 20110511 Tested on RouterOS 5.2\r\
\n\r\
\n# Set your specific ChangeIP.com preferences here.\r\
\n:global ddnsuser \"USERID\"\r\
\n:global ddnspass \"PASSWORD\"\r\
\n:global ddnshost \"HOSTNAME.changeip.net\"\r\
\n# Change ddnsport to 8245 to bypass proxy.\r\
\n:local ddnsport 80\r\
\n\r\
\n# Do not edit anything below this line. You have been warned.\r\
\n# Abusive updates to the system will cause firewall blocks.\r\
\n\r\
\n# Please be considerate and\r\
\n# do not let this script run more than once per 3-5 minutes.\r\
\n\r\
\n:log info \"DDNS: Starting.\"\r\
\n\r\
\n# Initialize checkpoint\r\
\n:global ddnscheckpoint\r\
\n:if ([:typeof \$ddnscheckpoint] = \"time\") do={\r\
\n\t:log info (\"DDNS: Last check was \" . ([/system clock get time] - \$d\
dnscheckpoint))\r\
\n} else={\r\
\n\t:log info \"DDNS: Cannot determine checkpoint, set now.\"\r\
\n\t:global ddnscheckpoint ( [/system clock get time] - 1d )\r\
\n}\r\
\n\r\
\n# Get the current IP\r\
\n:if ([/system clock get time] - \$ddnscheckpoint > [:totime 180s] || [/s\
ystem clock get time] - \$ddnscheckpoint < [:totime 0s]) do={\r\
\n :log info \"DDNS: Performing remote IP detection.\"\r\
\n /tool fetch address=\"ip.changeip.com\" host=\"ip.changeip.com\" src-\
path=(\"/\?\" . [/int eth get 0 mac-address ]) dst-path=\"ip.changeip.com.\
txt\" mode=http port=\$ddnsport\r\
\n :global ddnscheckpoint [/system clock get time]\r\
\n} else={\r\
\n :log info \"DDNS: Please be considerate and wait a few seconds longer\
.\"\r\
\n :break\r\
\n}\r\
\n\r\
\n# Parse the IP address received from fetch script.\r\
\n\t:global ddnslastip\r\
\n\t:local html [/file get \"ip.changeip.com.txt\" contents]\r\
\n\t:local ddnsip [:pick \$html ([:find \$html \"<!--IPADDR=\"] + 11) [:fi\
nd \$html \"-->\"] ]\r\
\n\r\
\n# Is it a valid IP and is it different than the last one\?\r\
\n\t:if ([:typeof [:toip \$ddnsip]] = \"ip\" AND \$ddnsip != \$ddnslastip \
) do={\r\
\n\t\t:log info \"DDNS: Sending UPDATE with \$ddnsip\"\r\

\n\t\t:log info [/tool dns-update name=\$ddnshost address=\$ddnsip key-nam\


e=\$ddnsuser key=\$ddnspass ]\r\
\n\t\t:global ddnslastip \$ddnsip\r\
\n\t} else={\r\
\n\t\t:log info \"DDNS: No update required.\"\r\
\n\t}\r\
\n}\r\
\n"
/system scheduler
add comment="ChangeIP.com Dynamic DNS Update" \
disabled=no \
interval=5m name=DynamicDNS \
on-event=HomingBeacon \
policy=read,write start-time=startup

You might also like