in questo articolo riporto un piccolo script in python nato per la necessità che ho avuto di restare "in contatto" con un pc collegato ad internet con un ip pubblico dinamico.
Cosa fà lo script?
Molto semplicemente lanciandolo inizia il suo lavoro che consiste in un loop infinito, lavorerà fin quando non lo fermeremo manualmente, e controllerà l'ip pubblico per rilevare variazioni. Se viene rilevato un cambiamento ci invierà una email comunicandoci il nuovo indirizzo.
Ma andiamo a vedere il codice e poi un breve commento.
#!/usr/bin/python
# -*- coding: utf-8 -*-
import urllib,smtplib,time
# Tempo di attesa in secondi tra due controlli
attesa = 600
# Parametri per invio email
destinatario = "email_destinataio@gmail.com"
mittente = 'email_mittente@gmail.com'
username = 'email_mittente@gmail.com'
password = 'password'
# Altre variabili
MemoriaIp=""
conta = 0
while True:
conta += 1
print "Controllo n. %i" % conta
# Legge IP pubblico
sock = urllib.urlopen("http://ipecho.net/plain")
ReadIP = sock.read()
sock.close()
if ReadIP != MemoriaIp:
# Comunica nuovo IP a video
print "Rilevato nuovo IP %s" % ReadIP
# Ricorda IP per verifica cambiamento
MemoriaIp = ReadIP
# Prepara variabili per email
oggetto = 'Notifica IP %s' % ReadIP
testo = 'Il tuo IP: %s' % ReadIP
header = 'From: %s\n' % mittente
header += 'To: %s\n' % destinatario
header += 'Subject: %s\n\n' % oggetto
msg = header + testo
#Invia email
server = smtplib.SMTP_SSL("smtp.gmail.com", 465)
server.ehlo()
server.login(username,password)
server.sendmail(mittente, destinatario, msg)
server.quit()
time.sleep(attesa)
Nella parte iniziale troviamo le variabili generali, in particolare attesa è l'intervallo di tempo che passa tra due controlli, il valore è espresso in secondi quindi il valore 600 equivale a 10 minuti.A seguire abbiamo le variabili con i dati dell' account del mittente e del destinatario delle email di segnalazione, compresi i parametri per l'autenticazione.
Come avrete notato in questo esempio ho usato degli indirizzi gmail, ho fatto questa scelta perchè credo che siano tra i piu' usati ..... vabe' c'è anche da dire che era quello che serviva a me ;)
Cmq il tutto è , come sempre, facilmente personalizzabile.
Le altre variabili sono solo di servizio e quindi non hanno bisogno di ulteriori spiegazioni.
A questo punto inizia il loop che controlla l'ip leggendo il risultato del sito http://ipecho.net/plain che ci fornisce il nostro ip pubblico, lo memorizza e lo confronta con l'ultimo letto.
A questo punto se i due valori non coincidono vuol dire che il nostro indirizzo ip è cambiato e quindi parte il messaggio email che contiene il nuovo ip.
Questo e' quanto, piccolo script ma spero utile anche a voi.
Saluti!
Beh se stai in una lan e sei connesso tramine NAT la NIC ha un IP locale privato.
RispondiEliminaVà salvato con estensione .sh o .py ???
RispondiEliminaQuesto commento è stato eliminato dall'autore.
EliminaSe non sbaglio l'estensione non è necessaria una volta che lo rendi eseguibile con chmod.
EliminaAnzi io le tolgo sempre.
Si tratta di uno script python quindi l' estensione predefinita e' .py, naturalmente non e' per niente indispensabile , puoi anche non mettere niente .
EliminaCome qualsiasi script puoi renderlo anche eseguibile con chmod +x .
Utilissimo post, proprio quello che mi serviva e ve lo rubo. Volendo essere incontentabile si potrebbe integrare il numero ip in un dominio di terzo livello in modo che cliccando su mioip.miosito.it/owncloud uno automaticamente si connette al cloud del vostro post di qualche giorno fa oppure digitando al terminale putty mioip.miosito.it uno si connette al pc?
RispondiEliminaGrazie
Scusami, non so se ho capito bene la domanda, cmq considera che il testo della email puo' essere poersonalizzato.
EliminaPuoi fare in modo che nella email ti venga inviato il link al pc e al servizio in particolare.
Ottima soluzione, non ci avevo pensato! :) tnx
Elimina