Skip to content

Instantly share code, notes, and snippets.

@changeme
Created March 27, 2016 15:56
Show Gist options
  • Save changeme/7aba471369fa2fda3f2f to your computer and use it in GitHub Desktop.
Save changeme/7aba471369fa2fda3f2f to your computer and use it in GitHub Desktop.
add comment="Ejecuta actualizacion OpenDNS" interval=15m name=OpenDNS on-event=OpenDNS policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive start-date=mar/23/2016 start-time=12:00:00
# Fuente: https://support.opendns.com/entries/69688114-Mikrotik-WinBox-Dynamic-Update-Script
# Funciona en RouterOS 6.34.3
# Modificar líneas 12,13, y 22
#--------------- Change Values in this section to match your setup ------------------
# User account info of OpenDNS
# Update-only password (obtained from OpenDNS Support). With two-factor authentication enabled, the use of an update only password is required.
:local odnsuser "tu@usuario.com"
:local odnspass "TuContraseñaOpenDNS"
# Set the hostname or label of network to be updated. This is the name of your OpenDNS network on the Dashboard.
# Hostnames with spaces are unsupported. Replace the value in the quotations below with your host name.
# Only one host is supported
# Use "all.dnsomatic.com" for the matichost to update all items in dnsomatic with this IP.
# Note, you must have admin or edit (Read/Write/Grant in the OpenDNS Dashboard) to update IP addresses.
:local odnshost "CASA"
# Change to the name of interface that gets the changing IP address
# May not be needed for your model number - commenting out this line may still work for single interface devices or if this is not supplied in the DNS-O-Matic script currently being used
:local inetinterface "ether1"
#------------------------------------------------------------------------------------
# No more changes needed, one optional change
:global previousIP;
:log info "Fetching current IP"
# Get the current public IP using DNS-O-Matic service.
/tool fetch url="http://myip.dnsomatic.com/" mode=http dst-path=mypublicip.txt
# Read the current public IP into the currentIP variable.
:local currentIP [/file get mypublicip.txt contents]
:log info "Fetched current IP as $currentIP"
# --------- Optional check to only run if the IP has changed (one line: :if)
# to disable, set line below to: ":if ($currentIP != 1) do={"
:if ($currentIP != $previousIP) do={
:log info "OpenDNS: Update needed"
:set previousIP $currentIP
# The update URL. Note the "\3F" is hex for question mark (?). Required since ? is a special character in commands.
# Some older editions of the MicroTik/WinBox OS require the following line instead (http) whereas newer versions require https.
# :local url "http://updates.opendns.com/nic/update\3Fhostname=$odnshost"
:local url "https://updates.opendns.com/nic/update?hostname=$odnshost"
:log info "OpenDNS: Sending update for $odnshost"
/tool fetch url=($url) user=$odnsuser password=$odnspass mode=http dst-path=("/net_odns.txt")
:delay 2;
:local odnsReply [/file get net_odns.txt contents];
:log info "OpenDNS update complete."
:log info "OpenDNS reply was $odnsReply";
} else={
:log info "OpenDNS: Previous IP $previousIP and current IP equal, no update need"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment