OSMC Raspberry – Script per aggiornare dtns.com con il proprio IP

Se come me avete la necessità di aggiornare l’IP dinamico di un vostro hostname su dtdns.com potete sfruttare un Raspberry che, ogni ora tramite le API di dtdns, invierà un eventuale nuovo IP.

Per prima cosa eseguiamo il login in SSH al nostro Raspberry (nel mio caso gestito tramite OSMC) e installiamo cron (in OSMC non è nativamente presente):

sudo apt-get install crontab

Una volta installato verifichiamo che sia in esecuzione:

sudo systemctl status cron

Se vedete “active (running)” è tutto in regola, diversamente lanciate un “service cron start”.

Un altro pacchetto che dobbiamo installare è dnsutils:

sudo apt install dnsutils

Ora dobbiamo creare il nostro script che verrà lanciato ogni ora. Scegliete una posizione (ad esempio /home/osmc/) e lanciate:

nano dtdnsupdate.sh

Incollate questo script:

#!/bin/bash

IPADDR="$(dig +short myip.opendns.com @resolver1.opendns.com)"
LASTIP=`nslookup YOUR_HOSTNAME ns1.darktech.org | grep -A1 YOUR_ID |
grep Address | awk '{
print $2 }'`

echo -n "`date` - "
if [ "$IPADDR" != "$LASTIP" ]; then
echo -e "GET /api/autodns.cfm?id=YOUR_ID&pw=YOUR_PASSWORD&client=BSD
HTTP/1.1\nHost: www.dtdns.com\nUser-Agent: bash\n\n" | \
nc www.dtdns.com 80 > /dev/null 2>&1
echo "Posted IP change from $LASTIP to $IPADDR"
else
echo "IP still $IPADDR"
fi

Prendendo come esempio un hostname chiamato “myhostname.dtdns.net” dovrete sostituire i seguenti valori con:

YOUR_ID: myhostname
YOUR_HOSTNAME: myhostname.dtdns.net
YOUR_PASSWORD: la vostra password con cui vi collegate al sito dtdns.com

Impostiamo lo script come eseguibile lanciando

chmod +x dtdnsupdate.sh

Prima di impostarlo in cron come operazione pianificata verifichiamo che tutto funzioni regolarmente lanciando lo script:

./dtdnsupdate.sh

Se l’IP è cambiato dovreste vedere qualcosa come:

mar 13 dic 2016, 20.04.27, CET - Posted IP change from XX.XX.XX.XX to XX.XX.XX.XX

Diversamente, se l’ip è rimasto il medesimo:

mar 13 dic 2016, 19.26.45, CET - IP still XX.XX.XX.XX

Verificato che tutto funzioni correttamente possiamo procedere con il crontab ma prima potrebbe essere interessante crearsi un file di log dove tenersi traccia degli update del nostro IP:

touch dtdnsupdate.log

Accediamo quindi alla maschera di modifica di crontab:

crontab -e

E, per lanciare l’update ogni ora, inseriamo:

0 * * * * /home/osmc/dtdnsupdate.sh >> /home/osmc/dtdnsupdate.log

Chiaramente potete modificare l’orario secondo le vostre esigenze, a tal proposito vi segnalo questo ottimo strumento per la sintassi del crontab: https://crontab.guru/

Dopo qualche giorno potreste anche modificare lo script rimuovendo l’else finale in modo tale da loggare esclusivamente i cambi di IP.

friimaind

Mi chiamo Massimiliano e sono uno sviluppatore web. Ho aperto questo blog principalmente come agenda dove tenere traccia di tutte le mie passioni :)

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *