Magazine High tech

Créer son propre Cloud – Partie 7 – Notification de changement d’IP

Publié le 10 août 2011 par Psyphi

Lors de mes dernières vacances pendant 3 semaines aux USA, je me suis servi de mon Cloud pour sauvegarder mes photos régulièrement. Malheureusement à la fin de la deuxième semaine le TonidoPlug s’est mis à ne plus répondre. J’ai tout de suite soupçonné un renouvellement de l’adresse IP de ma NeufBox. Ce que mon enquête à mon retour a confirmée.

Normalement, pour ne pas m’embêter avec l’adresse IP, je passe par le service de DNS dyndns.org qui me permet un nom de domaine qui pointe toujours vers la bonne IP. La NeufBox possède un client qui se connecte à dyndns à chaque renouvellement d’IP et/ou redémarrage. Hélas ce dernier à l’air de ne plus fonctionner, le statut du service reste en attente indéfiniment.

Pour résoudre ce problème, j’ai créé un script python qui me tient informé par e-mail en cas de renouvellement d’adresse IP de ma box adsl.

Le fonctionnement du script est très simple. Il lance une boucle infinie qui chaque heure se connecte à un site web qui retourne l’adresse IP de la box. Il compare, ensuite, l’adresse IP retourné avec celle sauvegardé en mémoire. Si elles sont différentes alors le script m’envoie un email via mon compte gmail.

#!/usr/bin/python
 
'''
CloudIpChecker.py
 
Created on Aug. 10 2011
 
@author: Thomas Bores
'''
import urllib2
import time, datetime
import smtplib
 
from email.mime.text import MIMEText
 
saved_ip = None
 
while True:
    # Get current local time
    localtime = str(datetime.datetime.now().strftime("%Y-%m-%d %H:%M"))
 
    # Connect to a website that returns the ip
    # Please avoid to overload my website, use your own
    url = 'http://www.bores.fr/ip.php'
    ip = urllib2.urlopen(url).read()
 
    if saved_ip != ip :
        #Save the new ip
        saved_ip = ip
 
        # Notice me by email about ip change
 
        # 1. Prepare mail content
        mailContent = localtime + "\nIP changed\nNew IP is: " + ip
        msg = MIMEText(mailContent)
        print "IP changed, send a notification by email with the following content:"
        print mailContent
 
        # 2. Add a subject
        msg['Subject'] = 'Cloud has a new IP - '+ip
 
        # 3. Use my gmail account to send the mail        
        mailServer = smtplib.SMTP("smtp.gmail.com", 587)
        mailServer.ehlo()
        # 4. Of course, we use a secure connection
        mailServer.starttls()
        mailServer.ehlo()
        mailServer.login('@gmail.com', '')
        mailServer.sendmail('@gmail.com', '@gmail.com', msg.as_string())
        mailServer.close()
    else :
        print "IP still the same"
 
    # Check every hour
    time.sleep(3600)

Ensuite il suffit de copier le script sur votre plug computer puis de l’exécuter depuis un terminal via SSH. Attention à bien utiliser la commande nohup pour ne pas que le script se termine à quand vous fermerez le terminal.

thomas@TonidoPlug:~$ nohup python CloudIpChecker.py

Retour à La Une de Logo Paperblog

A propos de l’auteur


Psyphi 1784 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte

Dossiers Paperblog