Voici un modeste tuto pour créer un script d’envoi d’email automatique afin de connaître l’adresse IP d’un PC distant. Cela permet d’utiliser par exemple VNC pour accéder au PC de sa maison sans avoir de dyndns. Ce tuto est destiné au utilisateur de Debian ou Ubuntu. Sinon passez en mode root lorsque « sudo » est indiquer dans les commandes.
1- Installation Postfix, curl et sendmail :
Postfix est un serveur SMTP sa fonction est d’envoyer le mail sur le net.
sudo apt-get install postfix procmail sasl2-bin
La configuration de postfix :
Ok>Site Internet>Ok>Ok> »nom du serveur mail par défaut le nom du PC »>Ok
Rem: Postfix sera désinstallé lors de l’installation de sendmail, c’est une petite bidouille pour configurer plus rapidement le compte mail root.
Curl permet d’afficher dans un terminal le code source d’une page internet. Et Sendmail permet d’envoyer des emails à partir d’un terminal.
Ensuite on créer un lien entre la commande mail du script avec l’exécution de Sendmail.
sudo apt-get install sendmail curl
sudo ln -s /usr/sbin/sendmail /bin/mail
2- Script « autoIP.sh » :
Nano est un éditeur de texte qui fonctionne dans un terminal. (Il est beaucoup plus simple d’utilisation que Vim.)
nano autoIP.sh
Copier coller le script ci-dessous en modifiant l’adresse mail de destination. Ou recopier le à la main.
#! /bin/sh
curl http://www.mon-ip.com/ \
| grep -Eo '[0-9]{1,3}(\.[0-9]{1,3}){3}' \
| mail [email protected]
Pour sortir et sauvegarder un fichier dans nano « Ctrl+x » et répondre « O » (2x)
REM: explication du script
- « #! /bin/sh » Permet de savoir quel est la nature du code a exécuter et de le lancer avec le programme approprié.
- « curl http://www.mon-ip.com » curl va chercher le code source de la page internet qui contient votre adresse IP dynamique que votre FAI vous a attribué pour 24h.
- « \ » l’antislash permet d’écrire une commande sur plusieurs ligne rendant plus lisible le code au programmeur.
- « | » le pipe (qui se dit « paillepe ») permet de transférer le résultat de sortie d’une commande vers l’entrée d’une autre commande. Ici Curl envoie le code source à grep pour qu’il puisse l’analyser.
- « grep » est un programme de tri qui permet d’isoler certaines itérations
- « [0-9]{1,3}(\.[0-9]{1,3}){3} » définie le masque des données recherchées. Littéralement « [0-9] » comporte des chiffres de 0 à 9 « {1,3} » contient de 1 à 3 chiffres. La suite est identique sauf qu’on ajoute un séparateur « . » qu’on multiplie par 3. Cela donne un masque IP suivant XXX.XXX.XXX.XXX où X est un chiffre entre 0 et 9.
- « mail [email protected] » envoie le résultat obtenu par grep à une adresse mail definie.
3- Rendre executable le script :
Sur linux pour qu’un script puisse être exécuter il doit avoir les droits d’exécutions.
sudo chmod +x ./autoIP.sh
4- Configurer cron (/!\ pour utilisateur expérimenté) :
Cron permet de programmer le déclenchement de logiciel périodiquement ou ponctuellement de façon automatique.
sudo nano /etc/crontab
Ajouter vos programmations à la suite des lignes déjà existante. En sachant que les données sont à écrire dans cette ordre « minute heure jours mois jour_de_la semaine utilisateur commande » le tout à chaque fois séparer par un espace et une astérisque quand l’option n’est pas utilisée.
Exemple de programmation pour une exécution 4 fois par jours tous les jours (00h00 6h00 12h00 18h00)
0 0 * * * root /home/user/autoIP.sh
0 6 * * * root /home/user/autoIP.sh
0 12 * * * root /home/user/autoIP.sh
0 18 * * * root /home/user/autoIP.sh
Pour quitter et sauvegarder dans nano « Ctrl+x » et « o »
Pour plus de précision visiter cette page (elle n’est pas toute récente mais elle a le mérite d’être en français et simple à comprendre).
5- Installer et configurer gnome-schedule version GUI de cron (pour utilisateur utilisant gnome):
sudo apt-get install gnome-schedule
Ajouter dans le menu un raccourci en mode root
gksu /usr/bin/gnome-schedule
Programmer dans gnome-schedule l’exécution du script à interval régulier (toutes les 6 heures c’est un bon compromis). Commande à utiliser pour lancer le script :
sh /home/user/autoIP.sh
Attention pour les tâches planifié ne nécessitant pas des droits administrateur, exécuter gnome-schedule sans « gksu ».
Mithrandir79