
Aujourd'hui petit tuto très rapide et très simple, le but est d'envoyer un e-mail sur votre boite mail à partir du Raspberry Pi. L'idée est venue du simple faite que mon routeur change parfois d'adresse ip publique donc dans ces cas plus de connexion ssh via l’extérieur. Puis toujours dans le même mail j'y ai ajouté une information concernant mon serveur de récupération de fichier de la SeedBox.
J'obtiens donc tout les jours à 6h30 un mail sous cet forme :
ip local : moniplocale
ip publique : monippublique
#Si un fichier à etait rapatrier cette nuit on aura :
Fichier telecharger cette nuit :
monfichier
monfichier
...
#Si aucun fichier telecharger on aura :
Pas de fichier telecharger cette nuit.
Le programme est en python, donc crée un fichier avec :
sudo nano ./mail.pyIl faut crée un fichier log qui contiendra le "ls" de la nuit précédente :
sudo nano ./ls_back.logle programme, ne reste pour qu'à adapter selon vos besoin :
#!/usr/bin/pythonOn donne les droits au programme :
import subprocess
import smtplib
import socket
import os
import urllib2
from email.mime.text import MIMEText
import datetime
#Commande ls dans le repertoire de Telechargement
cmd = os.popen("ls REP_TELECHARGEMENT")
ls = cmd.read()
#Lecture de l'ancien log
txt = open("REP_DU_LOG", "r")
txtr = txt.read()
#Test si il y a une difference de fichier present
if (ls==txtr):
Seedbox="Pas de fichier telecharger cette nuit"
else :
Seedbox="Fichier telecharger cette nuit : \n"
a=ls.replace("\n",";")
b=txtr.replace("\n",";")
b.split
a.split
for a in a.split(";"):
if a not in b :
Seedbox=Seedbox+a+"\n"
#Ecriture du nouveau log
txt.close
txt1 = open("REP_DU_LOG","w")
txt1.write(ls)
txt1.close
# Change to your own account information
to = 'EMAIL_CLIENT'
gmail_user = 'EMAIL_SERVEUR'
gmail_password = 'MOT_DE_PASSE_EMAIL'
smtpserver = smtplib.SMTP('smtp.gmail.com', 587)
smtpserver.ehlo()
smtpserver.starttls()
smtpserver.ehlo
smtpserver.login(gmail_user, gmail_password)
today = datetime.date.today()
ip_public =urllib2.urlopen('http://ip.42.pl/raw').read()
# Very Linux Specific
arg='ip route list'
p=subprocess.Popen(arg,shell=True,stdout=subprocess.PIPE)
data = p.communicate()
split_data = data[0].split()
ipaddr = split_data[split_data.index('src')+1]
my_ip = 'ip local : %s \r\n' % ipaddr + 'ip publique : %s\r\n' % ip_public + Seedbox
msg = MIMEText(my_ip)
msg['Subject'] = 'RaspberryPi info du %s' % today.strftime('%d %b %Y')
msg['From'] = gmail_user
msg['To'] = to
smtpserver.sendmail(gmail_user, [to], msg.as_string())
smtpserver.quit()
sudo chmod 555 ./mail.pyNe reste plus qu'à lancer le programme à heure régulière :
30 6 * * * sudo /home/pi/mail/mail.py &Ici tout les jours à 6h30 vous recevrez le mail.
Voila encore un petit tuto, pour plus d'information sur le programme ne pas hésiter à posez vos questions.
pil poil ce qui me fallait !!!
RépondreSupprimermerci
bonjour, j'ai une erreur dans l’exécution.
RépondreSupprimerDans la ligne :
ipaddr = split_data[split_data.index('src')+1]
ValueError: 'src' is not in list
J'arrive pas à trouver l'erreur.
C'est la version 3.5.3 de Python