Página 1 de 2 12 ÚltimoÚltimo
+ Responder ao Tópico



  1. Criei este post pois fiz muitas buscas tanto aqui quanto na internet e não encontrei algo que me ajudasse.
    Retirei o Script abaixo da Wiki-Mikrotik e ajustei apenas o que era necessário. Testei em RBS V6.5 e V5.22.
    Mude o que esta em vermelho para seus dados.


    :global ddnsuser "seu.ddns.com.br"
    :global ddnspass "suasenhadodominio"
    :global theinterface "InterfacedaInternet"
    :global ddnshost seu.ddns.com.br *-aqui não tem aspas*
    :global ipddns [:resolve $ddnshost];
    :global ipfresh [ /ip address get [/ip address find interface=$theinterface ] address ]
    :if ([ :typeof $ipfresh ] = nil ) do={
    :log info ("DynDNS: No ip address on $theinterface .")
    } else={
    :for i from=( [:len $ipfresh] - 1) to=0 do={
    :if ( [:pick $ipfresh $i] = "/") do={
    :set ipfresh [nick $ipfresh 0 $i];
    }
    } *ali onde esta members.ddns.com.br só server para os DDNS da winco. Não se esqueça de apagar os comentários em azul.*

    :if ($ipddns != $ipfresh) do={
    :log info ("DynDNS: IP-DynDNS = $ipddns")
    :log info ("DynDNS: IP-Fresh = $ipfresh")
    :log info "DynDNS: Update IP needed, Sending UPDATE...!"
    :global str "/nic/update\?hostname=$ddnshost&myip=$ipfresh&wildcard=NOCHG&mx=NOCHG&backmx=NOCHG"
    /tool fetch address=members.ddns.com.br src-path=$str mode=http user=$ddnsuser \
    password=$ddnspass dst-path=("/DynDNS.".$ddnshost)
    :delay 1
    :global str [/file find name="DynDNS.$ddnshost"];
    /file remove $str
    :global ipddns $ipfresh
    :log info "DynDNS: IP updated to $ipfresh!"
    } else={
    :log info "DynDNS: dont need changes";
    }
    }

    ###############################################
    #Este Script é para atualização via Interface ou http - DynDns, No-Ip e ChangeIP
    #Acho sempre mais interessante usa-lo via Http porque normalmente não dá erros. O que estiver em azul apague e em #vermelho mude para sua realidade. - Só Lembrando que retirei da Wiki-Mikrotik.


    :local username "your username"
    :local password "your password"
    :local hostname "subdomain.yourprovider.net"

    #availabe options: "http" or "iface"
    # - http: Consulta servidor externo para descobrir o IP (Usado atrás de NAT)
    # - iface: Nesta opção pega o IP da Interface de Internet (Nem sempre funciona direito)

    :local discoverBy "iface" *Aqui você define se quer por http ou interface - deixe iface ou http*

    # interface used to get ip address from (only if discoverBy = iface)

    :local iface "public-dsl" *Aqui só será usado se você escolher pela interface, se sim coloque o nome da sua interface de internet, se não deixe como esta.*

    # Serviços disponiveis: "dyndns", "noip" and "changeip"
    :local service "changeip" *Aqui você altera para o serviço que estiver utilizando*

    # Numero de dias para forçar mudança de IP
    :local forceUpdate 15

    #************************************************************************************************
    # Daqui em diante não faça mudanças, a menos que saiba.
    #************************************************************************************************

    :local force
    :global lastUpdate
    :local currentIP

    :if ($discoverBy="http") do={
    /tool fetch mode=http address="checkip.dyndns.org" src-path="/" dst-path="/dyndns.checkip.html"
    :local result [/file get dyndns.checkip.html contents]
    :local resultLen [:len $result]
    :local startLoc [:find $result ": " -1]
    :set startLoc ($startLoc + 2)
    :local endLoc [:find $result "</body>" -1]
    :set currentIP [:pick $result $startLoc $endLoc]
    } else={
    :set currentIP [ /ip address get [find interface=$iface disabled=no] address ]
    :for i from=( [:len $currentIP] - 1) to=0 do={
    :if ( [:pick $currentIP $i] = "/") do={ :set currentIP [:pick $currentIP 0 $i] }
    }
    }

    #get IP from DynDNS for our hostname
    :local resolvedIP [:resolve $hostname]

    # get current date in format mm/DD/YYYY
    :local date [ /system clock get date ]

    # convert to YYYYMMDD
    :local months ("jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec");
    :local month [ :pick $date 0 3 ]; :local day [ :pick $date 4 6 ]; :local year [ :pick $date 7 11 ];
    :local mm ([ :find $months $month -1 ] + 1);
    :if ($mm < 10) do={ :set month ("0" . $mm); } else={ :set month $mm; }
    :set date ($year . $month . $day);

    :if ([ :typeof $lastUpdate ]=[:nothing] || (($date-$lastUpdate) >= $forceUpdate && $forceUpdate > 0)) do={
    :set force true
    }

    :put ("Current IP: $currentIP ($discoverBy), Last update: $lastUpdate")

    # Determine if dyndns update is needed
    :if (($currentIP != $resolvedIP) || ($force = true)) do={

    :if ($service = "dyndns") do={
    /tool fetch user=$username password=$password mode=http address="members.dyndns.org" \
    src-path="/nic/update?hostname=$hostname&myip=$currentIP" dst-path="/output.txt"
    }
    :if ($service = "noip") do={
    /tool fetch user=$username password=$password mode=http address="dynupdate.no-ip.com" \
    src-path="/nic/update?hostname=$hostname&myip=$currentIP" dst-path="/output.txt"
    }
    :if ($service = "changeip") do={
    /tool fetch user=$username password=$password mode=http address="nic.changeip.com" \
    src-path="/nic/update?hostname=$hostname&myip=$currentIP" dst-path="/output.txt"
    }

    :local result [/file get output.txt contents]
    :log info ("dynamic-dns-updater: Service = $service, Hostname = $hostname")
    :log info ("dynamic-dns-updater: CurrentIP = $currentIP, Resolved IP = $resolvedIP")
    :log info ("dynamic-dns-updater: Update result: ".$result)
    /ip dns cache flush
    :set lastUpdate $date
    }




    Última edição por eomena; 29-12-2013 às 11:27.

  2. Amigo Eomena... sabe informar se esse script serve para mikrotik versão 3.30?

    Abraço.



  3. Citação Postado originalmente por Poemander Ver Post
    Amigo Eomena... sabe informar se esse script serve para mikrotik versão 3.30?

    Abraço.
    Realmente não testei, mas como é só mudar poucos parametros acho que vale apena testar, lembra de deixar o log do MK aberto porque se funcionar já vai a parecer no log.

    Tenho também Script DDNS Winco para Nat que busca a mudança de IP direto via HTTP e não na Interface. Tenho tambem um outro que server para DynDns, No-ip e ChangeIP no mesmo script, este é muito legal, testei todos e funcionaram muito bem. Se precisarem me avise que posto aqui. Abraços!!

  4. Poxa, amigo... muito legal, se vc puder disponibilizar esses scripts para q possamos testar, vai ser de grande valia.

    Abraço.



  5. Citação Postado originalmente por Poemander Ver Post
    Poxa, amigo... muito legal, se vc puder disponibilizar esses scripts para q possamos testar, vai ser de grande valia.

    Abraço.
    Além deste script coloquei mais um no inicio do post.
    ########################################################################################
    Script para DDNS Winco via HTTP. ***Só serve para DDNS WINCO***

    # Set needed variables
    :local username "your username"
    :local password "your password"
    :local hostname "your username"


    :global dyndnsForce
    :global previousIP


    # print some debug info
    :log info ("UpdateDynDNS: username = $username")
    :log info ("UpdateDynDNS: hostname = $hostname")
    :log info ("UpdateDynDNS: previousIP = $previousIP")


    # get the current IP address from the internet (in case of double-nat)
    /tool fetch mode=http address="checkip.dyndns.org" src-path="/" dst-path="/dyndns.checkip.html"
    :local result [/file get dyndns.checkip.html contents]


    # parse the current IP result
    :local resultLen [:len $result]
    :local startLoc [:find $result ": " -1]
    :set startLoc ($startLoc + 2)
    :local endLoc [:find $result "</body>" -1]
    :local currentIP [:pick $result $startLoc $endLoc]
    :log info "UpdateDynDNS: currentIP = $currentIP"


    # Remove the # on next line to force an update every single time - useful for debugging, but you could end up getting blacklisted by DynDNS!
    #:set dyndnsForce true


    # Determine if dyndns update is needed
    # more dyndns updater request details available at http://www.dyndns.com/developers/specs/syntax.html
    :if (($currentIP != $previousIP) || ($dyndnsForce = true)) do={
    :set dyndnsForce false
    :set previousIP $currentIP
    /tool fetch user=$username password=$password mode=http address="members.ddns.com.br" src-path="/nic/update?hostname=$hostname&myip=$currentIP" dst-path="/dyndns.txt"
    :local result [/file get dyndns.txt contents]
    :log info ("UpdateDynDNS: Dyndns update needed")
    :log info ("UpdateDynDNS: Dyndns Update Result: ".$result)
    :put ("Dyndns Update Result: ".$result)
    } else={
    :log info ("UpdateDynDNS: No dyndns update needed")
    }
    Última edição por eomena; 29-12-2013 às 11:31.






Tópicos Similares

  1. Ajuda para checar status UNBOUND (estará funcionando 100%)
    Por alexsuarezferreira no fórum Servidores de Rede
    Respostas: 3
    Último Post: 27-01-2014, 14:32
  2. Script para atualizar ddns ao rebootar
    Por gilmarnet no fórum Redes
    Respostas: 3
    Último Post: 31-07-2012, 00:36
  3. script para DDNS no WAP Pro - Ajuda
    Por xXRizziXx no fórum Redes
    Respostas: 8
    Último Post: 06-09-2009, 14:51
  4. script para criação de contas
    Por no fórum Linguagens de Programação
    Respostas: 1
    Último Post: 08-02-2003, 16:08
  5. scripts para logs do Radius
    Por dboom no fórum Servidores de Rede
    Respostas: 1
    Último Post: 15-09-2002, 15:00

Visite: BR-Linux ·  VivaOLinux ·  Dicas-L