https://github.com/acidsploit/mikrotik-routeros-scripts
Code: Select all
:global ovhddnsuser "<OVH DynDNS USER>"
:global ovhddnspass "<OVH DynDNS PASS>"
:global theinterface "<INTERFACE THAT HAS YOUR PUBLIC IP>"
:global ovhddnshost "<OVHDynDNS HOSTNAME>"
:global ipddns [:resolve $ovhddnshost]
:global ipfresh [ /ip address get [/ip address find interface=$theinterface ] address ]
:if ([ :typeof $ipfresh ] = nil ) do={
:log info ("OVHDynDNS: NO IP address on $theinterface")
} else={
:for i from=( [:len $ipfresh] - 1) to=0 do={
:if ( [:pick $ipfresh $i] = "/") do={
:set ipfresh [:pick $ipfresh 0 $i]
}
}
:if ($ipddns != $ipfresh) do={
:log info ("OVHDynDNS: $ovhddnshost DNS RECORD IP = $ipddns")
:log info ("OVHDynDNS: $theinterface CURRENT IP = $ipfresh")
:log info ("OVHDynDNS: UPDATING $ovhddnshost -> $ipfresh")
:global str "nic/update?system=dyndns&hostname=$ovhddnshost&myip=$ipfresh&wildcard=OFF&backmx=NO&mx=NOCHG"
# DEBUG fetch command
#:log info ("OVHDynDNS: /tool fetch address=www.ovh.com host=www.ovh.com src-path=$str mode=https user=$ovhddnsuser password=$ovhddnspass dst-path=(\"/OVHDynDNS.$ovhddnshost\")")
/tool fetch address=www.ovh.com host=www.ovh.com src-path=$str mode=https user=$ovhddnsuser password=$ovhddnspass dst-path=("/OVHDynDNS.".$ovhddnshost)
:delay 1
:global ovhresult [/file get "OVHDynDNS.$ovhddnshost" contents]
:log info "OVHDynDNS: OVH response: $ovhresult"
:global str [/file find name="OVHDynDNS.$ovhddnshost"]
/file remove $str
:if ($ovhresult = "good $ipfresh\n" ) do={
:log info "OVHDynDNS: SUCCESS"
} else={
:log info "OVHDynDNS: FAILED"
}
:global ipddns $ipfresh
:log info "OVHDynDNS: $ovhddnshost DNS RECORD = $ipfresh!"
} else={
:log info "OVHDynDNS: We good!"
}
}
Cheers!