Index Arduino Apps Reti Boinc Contatti Su questo server
Lista ultimi post

- Rs485-communicator

- Nvr a zero euri

- ArduHome

- Boinc

- Pubblicato mini-progetto didattico nfa-simulator

- Dyndns update script per RouterOs v6 'all-ram'

- Minimizzare il traffico http prodotto dalle api web per arduino

- Sito spostato su nuovo hosting

- There's no universe like 127.0.0.1

- New Horizon space connection

- Il loop nelle reti locali

- The Real Story Behind Wayland and X - Daniel Stone

- Nuovo server operativo

- Aggiunto il progetto "NetMonitor2"

- Aggiunta la possibilità di inserire commenti ai post

- Attivato nodo ninux ivan-casa

- Arduino web sprinkler

- Blocco ip personalizzato

- Aumentare la sicurezza bloccando gli ip dei server cinesi,nigeriani e russi.

- Arduino Power

- Zeroshell: hot spot con captive portal

14/12/2015 21:22
 

Dyndns update script per RouterOs v6 'all-ram'



RouterOs non ha mai avuto una funzione integrata per aggiornare un dns dinamico diverso dal proprio ddns proprietario.

Per fortuna, si possono creare degli script ad-hoc e gestirne l'esecuzione a proprio piacimento, caratteristica che ha portato la possibilità di creare uno script per aggiornare un ddns qualsiasi.
Sul web si trovano un milione di diversi script ma tutti hanno una cattiva abitudine: scrivere sulla flash il risultato intermedio e/o il risultato delle varie fetch eseguite. Questa killer-action come la chiamo io, unita al numero finito delle scritture eseguibili su flash, portano inevitabilmente ad una corruzione della memoria che, essendo sulle routerboard fisicamente saldata sulla pcb, significa buttare la scheda.

E pensare che basta una piccolissima modifica allo script più gettonato per fare in modo che il tutto funzioni in ram, eliminando il rischio di corrompere la flash con l'obbiettivo di salvaguardare la funzionalità della scheda:


:global ddnsuser "dyn_account_username"

:global ddnspass "dyn_account_password"
:global theinterface "wan-interface"
:global ddnshost myhost.dyndnsname.tld


: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 [:pick $ipfresh 0 $i];
}
}
:if ($ipddns != $ipfresh) do={
: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.dyndns.org src-path=$str mode=http user=$ddnsuser password=$ddnspass keep-result=no
:log info "DynDNS: IP updated to $ipfresh!"
}
}


Salviamo questo script tramite system>script e successivamente aggiungiamo un record in system>scheduler con action="/system script run dyndns" e timeout 1 (o 2,3, etc ) minuti.

Fatto. Dyndns sempre aggiornato e flash salva. Volete anche il caffè con il cioccolatino?



 

Commenti (0 commenti)


Scrivi commento
Nome
Email
Testo