Dans cet article, nous allons voir comment avertir par mail l'administrateur lorsque l'adresse IP WAN d'un serveur Linux change.
Prérequis
Vous devez disposer d'un serveur Linux avec un système de messagerie fonctionnel. Le paquet CURL doit être installé sur le serveur.
Par exemple, sous Debian, l'installation du paquet CURL se résume à cette commande :
# apt-get install curl
Environnement
Adapter l'emplacements suivant vos envies ou vos habitudes. Je stockerai mon script ici :
/root/scripts/verif_ip
Le système de messagerie que j'utilise est Postfix. Suivant votre serveur de courrier, il peut être nécessaire d'adapter mon script pour réaliser l'envoie de la notification.
Adresse email source : bkp-vps@adminpasbete.fr
Adresse email destinataire : administrateur@adminpasbete.fr
Script
Créer dans votre emplacement un fichier du nom verif_ip.sh
# touch /root/scripts/verif_ip/verif_ip.sh # chmod +x /root/scripts/verif_ip/verif_ip.sh
Créer un fichier qui va stocker l'IP WAN
# touch /root/scripts/verif_ip/ip
Editer le fichier créé précédemment
# nano /root/scripts/verif_ip/verif_ip.sh
#!/bin/bash emplacement="/root/scripts/verif_ip" date_act=`date` echo "Execution le : $date_act" >> $emplacement/log ip_old=`cat $emplacement/ip` ip_act=`curl ipinfo.io/ip 2>/dev/null` if [ "$ip_act" != "$ip_old" ] then echo "Changement IP : $ip_act" >> $emplacement/log echo $ip_act > $emplacement/ip echo "FROM:bkp-vps@adminpasbete.fr" > $emplacement/mail echo "TO:administrateur@adminpasbete.fr" >> $emplacement/mail echo "Subject: Changement IP" >> $emplacement/mail date >> $emplacement/mail echo "" >> $emplacement/mail echo "ANCIENNE IP :" >> $emplacement/mail echo $ip_old >> $emplacement/mail echo "" >> $emplacement/mail echo "NOUVELLE IP :" >> $emplacement/mail echo $ip_act >> $emplacement/mail /usr/sbin/sendmail -f "bkp-vps@adminpasbete.fr" -t "administrateur@adminpasbete.fr" < $emplacement/mail else echo "Pas de Changement IP" >> $emplacement/log fi
Vous pouvez tester le bon fonctionnement du script en l’exécutant
# /root/scripts/verif_ip/verif_ip.sh
Normalement, plusieurs fichiers sont créés :
# ls /root/scripts/verif_ip ip log mail verif_ip.sh #
Descriptions des fichiers
Le fichier /root/scripts/verif_ip/ip
Ce fichier stocke le résultat de la commande curl qui récupère l'IP
# cat /root/scripts/verif_ip/ip
78.75.78.75
Le fichier /root/scripts/verif_ip/mail
Il permet de générer le contenu du mail qui sera envoyé
# cat /root/scripts/verif_ip/mail
FROM:bkp-vps@adminpasbete.fr
TO:administrateur@adminpasbete.fr
Subject: Changement IP
vendredi 12 mai 2017, 12:00:01 (UTC+0200)
ANCIENNE IP :
88.85.88.85
NOUVELLE IP :
78.75.78.75
Le fichier /root/scripts/verif_ip/log
Il permet d’assurer une traçabilité de l’exécution du script verif_ip.sh
# cat /root/scripts/verif_ip/log
Execution le : vendredi 12 mai 2017, 11:40:01 (UTC+0200)
Pas de Changement IP
Execution le : vendredi 12 mai 2017, 11:50:01 (UTC+0200)
Pas de Changement IP
Execution le : vendredi 12 mai 2017, 11:50:15 (UTC+0200)
Pas de Changement IP
Execution le : vendredi 12 mai 2017, 12:00:01 (UTC+0200)
Changement IP : 78.75.78.75
Planification
Il est nécessaire de créer une tâche cron pour exécuter le script régulièrement. Dans mon exemple, je vérifie toutes les 10 minutes l'adresse IP WAN. Vous pouvez modifier ce délai suivant vos besoins
# crontab -e */10 * * * * /root/scripts/verif_ip/verif_ip.sh
Merci
Bonjour,
Merci pour ce tutoriel, que je viens de suivre. Quand je le teste, je ne reçois aucu message de notification car, si je comprends bien, on ne reçoit un message de notification que quand l'@IP publique a changé. Est-ce correct ?
Merci de votre réponse,
Cordialement,
JP
C'est exact.