Ho creato uno script che permette di usare Dot Tk come un servizio di dns per IP dinamici (come DynDNS e No-Ip).
Gli unici requisiti che ha lo script è che si usi il Dot Tk Free DNS Service e che ci sia almeno un dominio di tipo A.
Lo script esegue il login al my.dot.tk, quindi va nella pagina dei siti, cerca il link per modificare il dominio interessato, quindi controlla se l’indirizzo IP del campo A omonimo al dominio - o di tutti i campi A a proprio gusto - è uguale all’indirizzo IP in uso che ricava da una pagina web. In caso di esito negativo, lo sostituisce e poi salva. Per fare il tutto ho dovuto usare l’analisi dell’HTML della pagina.
È scritto in Python e rilasciato secondo licenza GNU GPLv2.
È molto semplice da usare, soprattutto per Linux visto che ogni distribuzione praticamente include python.
Occorre scaricare il file dottk_updater_v1.0.py e modificare l’ultima riga con email di registrazione a dot tk, password di dot tk, e il dominio che si vuole aggiornare con un qualsiasi editor di testo semplice o meglio ancora con un editor apposta per python.
Più precisamente si chiama la classe DottkUpdate(username, password, dominio, [every_a=True, [checkip_url=http://checkip.dyndns.com/]])
con i primi tre parametri obbligatori, il quarto (every_a) serve per dire se aggiornare tutti i campi a (True) o solo quello omonimo al paramotro dominio (se every_a=False) ed è True di default. Il quinto parametro (checkip_url) serve per dire a che pagina web controllare il proprio IP (di default http://checkip.dyndns.com/) e non vi consiglio di cambiarlo perché se guardate il codice della funzione HTMLDupdate.getIP, si eliminano certi caratteri e non è detto che perciò si ottenga lo stesso risultato con pagine diverse.
Per farlo funzionare su Linux basta dare il permesso di esecuzione e aprirlo come un eseguibile o come qualsiasi script della shell, sugli altri sistemi, ma anche su Linux se volete, dovete passarlo come parametro all’eseguibile di python e cioè python dottk_updater_v1.0.py
. Se non avete l’interprete, vi rimando al sito di python.
Ovviamente per poter tenere aggiornato l’IP dovete metterlo in ripetizione costante, per esempio io ho messo con CRON sul mio muletto che la faccia andare ogni mezz’ora.
Altre due note sul programma: alcune cose sono inutili, tuttavia le ho messe per essere sicuri in caso di cambiamento improvviso delle pagine o di aggiunta di input magari hidden… Anche se ha del superfluo per me va bene così.
La seconda nota è che la classe DottkUpdate in realtà fa poco, infatti il lavoro è affidato tutto alla classe HTMLDupdate che però vuole più parametri (per il test in locale o l’adattamento a altri siti), infatti DottkUpdate serve solo a prendere gli elementi veramente necessari per l’update. Nessuno però vi vieta di usare HTMLDupdate.
2 commenti
Ciao, questo script è proprio quello che mi serviva!
Non avendo mai utilizzato il linguaggio python e quindi non essendo pratico della sintassi, mi chiedevo se il tuo script prima di aggiornare l'ip controlla se questo è effettivamente cambiato oppure se lo aggiorna comunque
Grazie per i chiarimenti
Altra modalità di funzionamento sarebbe quella di capire localmente se l'ip è cambiato e in quel caso far partire l'update. Così lo script si può lanciare ad esempio ogni 10 minuti o anche meno, senza appesantire troppo il traffico dati…
Ciao e grazie per i chiarimenti
Simone
Ciao, io lo eseguivo ogni ora o ogni mezz'ora.
Quanto al test dell'ip, sì, esegue un test ma lo fa comunque accedendo al pannello di controllo.
Poi per non utilizzo del muletto ho preferito cambiare soluzione: ora uso il servizio zoneedit con l'impostazione personalizzata dei DNS.
Ti consiglio di usare questo perché ha un URL apposito che puoi anche chiamare con wget.
Questo script non so ora se funzioni bene o no.
A me non aveva mai dato problemi ma ad un certo punto mi hanno disattivato il dominio, così non l'ho più usato.
Se dovessi scegliere oggi ti consiglierei direttamente Zone edit.
Mentre se lo vuoi usare per studiartelo, accomodati pure.
Ah, un'ultima nota: l'intervallo di tempo lo devi scegliere con CRON.
Se hai ancora bisogno di chiarimenti, chiedi pure!