Récupérer l’adresse IP de sa box internet
Bon voilà, j’ai besoin de connaitre l’adresse IP public de ma box internet afin de pouvoir accéder à mon Raspberry à distance via internet. Or l’adresse IP est dynamique donc elle est amenée à changer en fonction des opérateurs. Je sais, je sais il existe des services qui permettent de gérer cela (dyndns, no-ip…); mais pour des raisons que je ne vais pas expliquer, je veux m’en passer.
Le fonctionnement du programme est le suivant :
– toutes les heures mon Raspberry, récupère l’adresse IP publique de ma box via le site http://www.monip.org.
– Si l’adresse IP est modifié, j’envoi un mail qui contient la nouvelle adresse.
Le programme en python est le suivant :
#!/usr/bin/env python # recuperation adresse IP publique # importation des modules email USERNAME = "xxxxxxxxx@gmail.com" if os.path.exists(ip_file): |
Il suffit de renseigner les variables USERNAME, PASSWORD et MAILTO pour l’adapter à vos besoins.
Afin de pouvoir exécuter mon programme toutes les heures, je vais utiliser le service cron; pour cela je vais taper la commande ‘crontab –e’ et je vais ajouter la ligne suivante :
0 * * * * python /programmation/python/ipbox.py |
En sachant que le nom de mon programme est ipbox.py et qu’il se trouve dans le dossier /programmation/python.
Très sympa et très pratique. Pour optimiser tout ça, je propose de faire en sorte que ce programme démarre au démarrage du raspberry Pi en rajoutant un fichier shellscript qui lance le programme. Et pour que le fichier shellscript se lance au démarrage, il faut modifier une ligne dans un fichier. Admettons que le fichier shellscript se nomme exemple.sh et qu’il se trouve sur ton Desktop. Alors ouvre le fichier /etc/xdg/lxsession/LXDE/autostart avec un éditeur de texte (VI va très bien) et il faut rajouter la ligne suivante: @/home/nom-d’utilisateur/Desktop/exemple.sh
Comme ça, ton code python sera exécuter a chaque fois.
En espérant avoir pu t’aider,
Sven Borden
P.S.
Juste pour te raccourcir le travail. Le shellscript devrait être écrit comme ça je pense:
#!/bin/sh
echo « Starting ipbox.py »
if crontab -e 0 * * * * python /programmation/python/ipbox.py; then
echo » Started: [OK] »
else
echo « Strarted: [FAIL] »
exit 1
fi
Aussi, le ‘@’ de la commande à rajouter plus haut sert à ce que le programme soit relancé tant qu’il plante. C’est pourquoi il y a un exit 1 dans le shellscript.
Merci pour l’info
Bonjour,
Tout d’abord un grand merci pour ce tuto.
Après avoir pas mal galéré, ça fonctionne.
Je viens partager avec vous mes problèmes et leurs solutions si jamais ça peut aider.
Dans un premier temps, j’avais une erreur d’encodage que j’ai réglé en ajoutant la ligne suivante au début juste après #!/usr/bin/env python :
# -*-coding:Utf-8 -*
Puis j’ai eu un soucis de caractère donc j’ai été obligé de remplacer tous les ‘ par des ‘ (alt + 4), je sais que l’on ne voit pas beaucoup de différence mais pourtant il y en a une.
Ensuite j’ai eu un problème de droit pour écrire le fichier ipbox.txt dans le répertoire « /etc/ » donc j’ai changé son chemin et je l’ai mis dans « /home/pi/ ».
Un problème du côté de l’url aussi :
Ce n’est pas « texte = urllib.urlopen(« http://www.monip.org").read() »
Mais « texte = urllib.urlopen(« http://www.monip.org).read() »
Concernant l’authentification Google, je fais partie de ceux qui utilise la double authentification donc si vous êtes comme il ne faut pas utiliser le mot de passe de votre compte mais un autre qui sera fait uniquement pour cette « application ».
Plus d’info ici : https://support.google.com/accounts/answer/185833
Et lorsque je suis dans le dossier contenant mon script python je fais : python envoiIpBox.py
Et je reçois bien le mail.
Par contre je pense avoir fais des truc inutile, car étant donné que j’ai vu sendmail dans le code je me suis qu’il fallait l’installer donc je l’ai fait sans le configurer mais je ne suis pas sûr de son utilité.
Après j’ai des doutes au sujet du cron, on met « 0 * * * * python /programmation/python/ipbox.py »
Mais ça ne serais pas plutôt « 0 * * * * pi /programmation/python/ipbox.py »
pi étant mon nom d’utilisateur.
Car sur le net j’ai trouvé ça : #minute heure date mois jour utilisateur commande
Et dans mon fichier crontab j’ai : # m h dom mon dow command
Donc je ne suis sûr de rien.
Et est-ce que vous connaissez une méthode afin de s’assurer que mon cron se lance au démarrage et tourne bien par la suite car je n’ai rien trouvé de concluant jusqu’à maintenant.
En vous remerciant pas avance des réponses que vous pourrez me donner.
Cordialement,
Julien.
Bonjour,
Merci pour ce partage.
Bonne continuation.
Merci
Bonjour,
Merci de votre aide, cela va m’être bien utile !
Adrien.
Bonsoir, merci
Bonjour,
Un grand merci pour ce tuto, je suis vraiment débutant dans le domaine et je suis arrivé à envoyer un mail avec mon Raspberry « » Hourra !! « ».
J’ai tout de même un soucis, Google bloque se mail et me demande d’ouvrir l’accès aux opérations mois sécuriser, ce qui ne me plait pas beaucoup.
Est-il possible de créer une exception ou de rendre le mail sécurisé ?
bonjour,
merci pour ce tuto
j’ai bcp galéré et je voulais signaler un erreur de syntaxe dans la partie paramètres nécessaires:
server = smtplib.SMTP(‘smtp.gmail.com’,587)
Bon courage à tous
bonjour,
impossible de faire fonctionner crontab
je galère depuis des jours et des jours
j’ai essayé différentes syntaxes et rien ne fonctionne
Bonjour,
Merci pour ce script.
Je recontre une difficulté, mon IP est bien récupérée et inscrite dans le fichier, par contre il me l’envoie par mail alors que celle-ci n’a pas changée.
Pouvez-vous m’aider, svp? Je voudrai recevoir le mail que si l’adresse IP a changé.
Merci
Cordialement,
bonjour,
pour éviter tout problème. Je vous conseille de télécharger le programme sur mon Github à l’adresse https://github.com/itechnofrance/Raspberry
Ensuite,
pouvez-vous vérifier que le fichier ipbox.txt est bien créé dans /etc
Bonjour,
Merci pour ce script, cependant après avoir rectifié les ‘ et autres cf. commentaires ci-dessus. Le script fonctionne très bien l’adresse IP est inscrite dans le fichier et le mail est envoyé. Par contre lorsque l’IP ne change pas et que j’exécute le script le mail est quand meme envoyé alors qu’il ne devrait pas.
Pouvez-vous m’aider, svp?
Merci
Cordialement,
bonjour,
pour éviter tout problème. Je vous conseille de télécharger le programme sur mon Github à l’adresse https://github.com/itechnofrance/Raspberry
Merci beaucoup, votre script fonctionne parfaitement !!!
de rien.