Postado originalmente por
marcelodm
Podes usar o codigo abaixo e colar em System - scripts com todos os "policy" ativados, e depois vá a System - Scheduler e adicione uma marcação para execução do script por exemplo de 5 em 5 minutos ou o tempo que vc achar necessário!!, é necessário antes que vc cadastre-se no CHANGEIP.ORG (que é a mesma coisa do dyndns) e utilize os dados, tipo Username , senha e host seuhost.changeip.org para ajustar o script!, este script só funcionou para o CHANGEIP.ORG, mas se alguem conseguir fazer funcionar no dyndns por favor me repasse!!!!
segue código..
#script testado para o CHANGEIP.ORG, não funcionou com dyndns....
# Define User Variables
:log info ("Inicio DDNS...")
:global ddnsuser "seu login"
:global ddnspass "sua senha"
:global ddnshost "seuhost.changeip.org"
# Define Global Variables
#:log info ("Variaveis...")
:global ddnsip
:global ddnslastip
:if ([ :typeof $ddnslastip ] = nil ) do={ :global ddnslastip "0" }
#:log info ("Obtendo versão...")
:global ddnsinterface
:global ddnssystem ("mt-4.2")
#aparentemente a linha abaixo deixou de funcionar nas versões do MK acima de 4.0, por isso fixei a versão na linha acima...
#[/system package get system version] )
# Define Local Variables
:local int
#defina a interface por onde entra o link do seu modem roteado, neste caso aqui a ether1...
:global ddnsinterface "ether1"
# Grab the current IP address on that interface.
#:log info ("Endereço IP atual...")
:global ddnsip [ /ip address get [/ip address find interface=ether1 ] address ]
:log info ("DDNS: IP Atual na interface " . $ddnsinterface . " é: " . $ddnsip)
#coloque na linha abaixo o nome do seu HOST no changeip..
:log info ("Endereço atual do IP dinamico: " .
ut [:resolve seuhost.changeip.org])
#:log info ("Compara endereços...")
:global ddnslastip "0"
# Did we get an IP address to compare?
:if ([ :typeof $ddnsip ] = nil ) do={
:log info ("DDNS: Não há endereço IP na interface: " . $ddnsinterface . ", verifique.")
} else={
:if ($ddnsip != $ddnslastip) do={
:log info "DDNS: ATUALIZANDO..."
:log info [
ut [/tool dns-update name=$ddnshost address=[
ick $ddnsip 0 [:find $ddnsip "/"] ] key-name=$ddnsuser key=$ddnspass ] ]
:global ddnslastip $ddnsip
} else={
:log info "DDNS: Atualização não necessária."
}
}
#:log info ("Fim script...")
# End of script