Difference between revisions of "FR:RPi Email IP On Boot Debian"
(→Quelles compétences sont requises ?) |
(→Qu'est-ce-que ça fait ?) |
||
(3 intermediate revisions by the same user not shown) | |||
Line 6: | Line 6: | ||
=Qu'est-ce-que ça fait ?= | =Qu'est-ce-que ça fait ?= | ||
− | + | Ce code va récupérer l'adresse ip de votre Pi et ensuite l'envoyer par courriel vers l'adresse de messagerie spécifiée. Il est inspiré par le besoin d'accéder au Pi via SSH ou d'autres protocoles réseau en l'absence de moniteur et sans avoir à le changer d'un réseau à l'autre. Le code se base sur un serveur SMTP Gmail. Vous devrez le modifier un peu pour d'autres serveurs (ce qui ne rentre pas dans le cadre de ce guide) | |
=De quoi avez-vous besoin ?= | =De quoi avez-vous besoin ?= | ||
Line 25: | Line 25: | ||
==Création du script python== | ==Création du script python== | ||
− | + | Copiez et collez le code suivant dans un éditeur de texte (je suis moi-même adepte de nano) | |
import subprocess | import subprocess | ||
Line 32: | Line 32: | ||
from email.mime.text import MIMEText | from email.mime.text import MIMEText | ||
import datetime | import datetime | ||
− | # | + | # À remplacer par vos propres informations de compte |
− | to = ' | + | to = 'moi@exemple.com' |
gmail_user = 'test@gmail.com' | gmail_user = 'test@gmail.com' | ||
− | gmail_password = ' | + | gmail_password = 'votremotdepasse' |
smtpserver = smtplib.SMTP('smtp.gmail.com', 587) | smtpserver = smtplib.SMTP('smtp.gmail.com', 587) | ||
smtpserver.ehlo() | smtpserver.ehlo() | ||
Line 42: | Line 42: | ||
smtpserver.login(gmail_user, gmail_password) | smtpserver.login(gmail_user, gmail_password) | ||
today = datetime.date.today() | today = datetime.date.today() | ||
− | # | + | # Très spécifique à Linux |
arg='ip route list' | arg='ip route list' | ||
p=subprocess.Popen(arg,shell=True,stdout=subprocess.PIPE) | p=subprocess.Popen(arg,shell=True,stdout=subprocess.PIPE) | ||
Line 48: | Line 48: | ||
split_data = data[0].split() | split_data = data[0].split() | ||
ipaddr = split_data[split_data.index('src')+1] | ipaddr = split_data[split_data.index('src')+1] | ||
− | my_ip = ' | + | my_ip = 'Votre ip est %s' % ipaddr |
msg = MIMEText(my_ip) | msg = MIMEText(my_ip) | ||
− | msg['Subject'] = 'IP | + | msg['Subject'] = 'IP du RaspberryPi à %s' % today.strftime('%b %d %Y') |
msg['From'] = gmail_user | msg['From'] = gmail_user | ||
msg['To'] = to | msg['To'] = to | ||
Line 56: | Line 56: | ||
smtpserver.quit() | smtpserver.quit() | ||
− | + | Enregistrez le script sous un nom parlant tel que ''''startup_mailer.py'''' et prenez note de son chemin (comme '''''/home/pi/Code/startup_mailer.py''''') | |
− | + | Pour faire bonne mesure, rendez-le exécutable | |
sudo chmod +x startup_mailer.py | sudo chmod +x startup_mailer.py | ||
==Édition de /boot/boot.rc== | ==Édition de /boot/boot.rc== | ||
− | + | En utilisant encore une fois votre éditeur de texte, ouvrez '''''/boot/boot.rc''''' (cela suppose que vous avez déjà renommé ce fichier en boot.rc Sinon, voir [[RPi_Advanced_Setup]]). Par exemple : | |
sudo nano /boot/boot.rc | sudo nano /boot/boot.rc | ||
− | + | Ajoutez les lignes suivantes en fin de fichier, en faisant la modification avec le chemin de votre répertoire et enregistrez. | |
− | #Script | + | #Script pour envoyer l'adresse ip par courriel au redémarrage |
python /home/pi/Code/startup_mailer.py | python /home/pi/Code/startup_mailer.py | ||
== Alternative si Rasbian est utilisée == | == Alternative si Rasbian est utilisée == | ||
− | + | Si vous utilisez Rasbian, vous n'aurez pas de fichier /boot/boot.rc. À la place, vous pouvez éditer /etc/rc.local comme ceci : | |
sudo nano /etc/rc.local | sudo nano /etc/rc.local | ||
− | + | Ajoutez la ligne python afin que le fichier ressemble à ceci : | |
# rc.local | # rc.local |
Latest revision as of 06:38, 1 June 2013
Retour vers les Guides RPi.
Envoi au démarrage d'un courriel contenant l'adresse IP
Contents
Qu'est-ce-que ça fait ?
Ce code va récupérer l'adresse ip de votre Pi et ensuite l'envoyer par courriel vers l'adresse de messagerie spécifiée. Il est inspiré par le besoin d'accéder au Pi via SSH ou d'autres protocoles réseau en l'absence de moniteur et sans avoir à le changer d'un réseau à l'autre. Le code se base sur un serveur SMTP Gmail. Vous devrez le modifier un peu pour d'autres serveurs (ce qui ne rentre pas dans le cadre de ce guide)
De quoi avez-vous besoin ?
Un Raspberry Pi fonctionnel, avec accès réseau
Quelles compétences sont requises ?
Niveau moyen. Vous devez être à l'aise pour naviguer sur un système linux et aussi pour utiliser sudo (si vous voulez utiliser ce script, il y a des chances que vous ayez une petite expérience de l'invite de commande).
Aperçu de ce guide
Vous devez
- Créer un script python et l'enregistrer dans un répertoire
- Rendre le script python exécutable
- Éditer /boot/boot.rc
Allons-y
Création du script python
Copiez et collez le code suivant dans un éditeur de texte (je suis moi-même adepte de nano)
import subprocess import smtplib import socket from email.mime.text import MIMEText import datetime # À remplacer par vos propres informations de compte to = 'moi@exemple.com' gmail_user = 'test@gmail.com' gmail_password = 'votremotdepasse' smtpserver = smtplib.SMTP('smtp.gmail.com', 587) smtpserver.ehlo() smtpserver.starttls() smtpserver.ehlo smtpserver.login(gmail_user, gmail_password) today = datetime.date.today() # Très spécifique à Linux 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 = 'Votre ip est %s' % ipaddr msg = MIMEText(my_ip) msg['Subject'] = 'IP du RaspberryPi à %s' % today.strftime('%b %d %Y') msg['From'] = gmail_user msg['To'] = to smtpserver.sendmail(gmail_user, [to], msg.as_string()) smtpserver.quit()
Enregistrez le script sous un nom parlant tel que 'startup_mailer.py' et prenez note de son chemin (comme /home/pi/Code/startup_mailer.py)
Pour faire bonne mesure, rendez-le exécutable
sudo chmod +x startup_mailer.py
Édition de /boot/boot.rc
En utilisant encore une fois votre éditeur de texte, ouvrez /boot/boot.rc (cela suppose que vous avez déjà renommé ce fichier en boot.rc Sinon, voir RPi_Advanced_Setup). Par exemple :
sudo nano /boot/boot.rc
Ajoutez les lignes suivantes en fin de fichier, en faisant la modification avec le chemin de votre répertoire et enregistrez.
#Script pour envoyer l'adresse ip par courriel au redémarrage python /home/pi/Code/startup_mailer.py
Alternative si Rasbian est utilisée
Si vous utilisez Rasbian, vous n'aurez pas de fichier /boot/boot.rc. À la place, vous pouvez éditer /etc/rc.local comme ceci :
sudo nano /etc/rc.local
Ajoutez la ligne python afin que le fichier ressemble à ceci :
# rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. # Print the IP address _IP=$(hostname -I) || true if [ "$_IP" ]; then printf "My IP address is %s\n" "$_IP" python /home/pi/Code/startup_mailer.py fi exit 0
Pour finir
Redémarrez votre Pi et vous devriez recevoir un courriel avec votre adresse ip