SCRIPT - Notification par mail lors d'un changement d'adresse IP WAN

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

3 commentaires sur “SCRIPT - Notification par mail lors d'un changement d'adresse IP WAN

  1. Jean-Pierre Reply

    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

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *