Script per ottenere il proprio IP pubblico via Telegram ogni volta che viene aggiornato

Se siete un po’ nerd e avete in casa o in ufficio un server al quale dovete poter accedere (magari da un terminale remoto con ssh) saprete che spesso il proprio internet provider non garantisce un IP pubblico fisso (se non a pagamento) e questo può rivelarsi un problema, ecco perché ho pensato ad un semplice script automatico che può essere d’aiuto.

Premetto che ci sono diversi modi per ottenere lo stesso risultato, come ad esempio passare da un servizio di DDNS in grado di aggirare anche il problema delle reti nattate, ma io sono più “vecchio stile” e preferisco avere tutto sotto controllo senza dipendere da nessuno.

Ma perché uno script? Perchè funziona a prescindere; è il livello più basso del sistema e anche se altri servizi dovessero crashare la bash dovrebbe essere una garanzia (quasi sempre).

E perché Telegram? Per lo stesso motivo; l’invio di una notifica a Telegram dipende unicamente da una chiamata http tramite curl.

Personalmente posseggo un piccolo server casalingo che si occupa di gestire la domotica e alcuni altri servizi, per precisa scelta ho optato per un’installazione su Ubuntu Server con tutti i servizi extra in Docker, questo dovrebbe garantirmi che anche se uno di questi dovesse crashare o non avviarsi per i motivi più disparati, il sistema dovrebbe essere in grando di andare up senza problemi.

Questo script è solo una funziona di backup, utilizzo un tunnel Cloudflare per la domotica e un bot Telegram in grado di inviarmi l’IP in ogni momento, ma come detto in precedenza, tutto questo dipende da altri servizi che devono avviarsi ed essere disponibili, cosa non così scontata.

Per fare ciò a cui ambisce questa guida avrete bisogno di:

  • 1 Bot Telegram
  • il vostro chat_id Telegram
  • 1 terminale (locale o remoto con ssh è indifferente)
  • curl installato
  • 1 connessione ad internet

Creare un Bot Telegram è una procedura ormai abbastanza semplice ma se ne avete uno già attivo potete tranquillamente utlizzare quello. Comunque ecco i passi salienti:

  • aprite Telegram e cercate un bot chiamato @BotFather
  • avviatelo e selezionate dal menu “create a new bot
  • seguite le istruzioni inserendo le informazioni richieste e segnatevi il Token che vi viene fornito al termine e che dovrebbe essere qualcosa di simile a: 1234567890:AbCdefghaILmHngF (eventualmente può essere recuperato in un secondo momento)

Per recuperare il chat_id vi consiglio di aprire Telegram, cercare un bot che si chiama @GetMyChatID_Bot e avviarlo, troverete immediatamente il vostro chat_id che dovrete segnarvi da parte insieme al token visto in precedenza.

Ora aprite un terminale sul pc che vi interessa (in locale o tramite ssh è indifferente), e cominciate a creare il file di testo dove memorizzare il vostro ip pubblico, io ho scelto di salvarlo nella mia home ma non è vincolante. Dal terminale digitate:

touch /home/username/pubblic_ip.txt

Ora non resta che passare allo script vero e proprio, anche questo può essere memorizzato in qualsiasi posizione, io sono rimasto nella home:

nano /home/username/ip_notifier.sh

Nell’editor di testo che appare incollate il seguente codice:

#!/bin/bash
#Script to report public IP address change
#The file that contains the current pubblic IP
ext_ip="/home/username/pubblic_ip.txt"

#Get the current public IP
new_ip=$(curl http://ifconfig.me/ip)

#Check file for previous IP address
if [ -f $ext_ip ];
  then
  know_ip=$(cat $ext_ip)
else
  know_ip=
fi

#See if the IP has changed
if [ "$new_ip" != "$know_ip" ];
  then
  echo $new_ip > $ext_ip

#If so send an alert on Telegram Bot
  curl -i -X GET "https://api.telegram.org/bot1234567890:AshhhohALIHSOIHglHLhaO/sendMessage?chat_id=12345678&text=$new_ip"
fi

ovviamente dovrete motificare i valori di ext_ip e quelli relativi al token e chat_id di Telegram inserendo i vostri.

Ora bisogna renderlo eseguibile:

chmod +x /home/username/ip_notifier.sh

Finito, adesso ogni volta che verrà eseguito lo script, se ci sarà una variazione dell’IP pubblico, il sistema inviarà una notifica con il nuovo valore direttamente su Telegram.

Per rendere il tutto automatico, io ho scelto di impostare crontab perchè esegua in autonomia lo script ogni 3 ore, che è per me un tempo ragionevole di “vuoto” in caso di problemi.

Come ogni cosa in informatica, il limite è solo la propria fantasia.

Alessandro Salgoni
Alessandro Salgoni
0 0 voti
Valutazione Articolo
Sottoscrivi
Notificami
guest
0 Commenti
Feedback in linea
Visualizza tutti i commenti