===== Envoi par mail de l'adresse IP dynamique d'un serveur =====
Exemple d'utilisation :
Dans mon cas, cela va me servir à me faire envoyer par courriel l'adresse IP de mon serveur.
En fait, comme je fais des tests, j'ai un nom de domaine gratuit avec une redirection sur mon adresse IP.
Lorsque mon adresse IP change ... et bien il faut être chez soit pour connaître cette nouvelle adresse IP.
Nouvelle adresse IP qu'il faut que je renseigne dans la partie admin sur le site qui gère la redirection de mon nom de domaine.
__**Prérequis :**__
* avoir un FAI ou autre qui ne bloque pas le port 25 en smtp
==== 1) Installer sendEmail ====
sudo apt-get install sendEmail
==== 2) Connaître son adresse IP : ====
Dans un terminal tapez :
wget -qO- icanhazip.com
Copier son adresse IP dans un nouveau fichier ip_public_1 qui sera enregistré sur le Bureau :
sudo nano ~/Bureau/ip_public_1
Copier son adresse IP dans un nouveau fichier ip_public_2 qui sera enregistré sur le Bureau :
sudo nano ~/Bureau/ip_public_2
==== 3) Le script ip_pub.sh ====
Sur la base du script de Jonas consultable ici :
http://www.informetik.fr/drupal7/node/13
sudo nano ~/Bureau/ip_pub.sh
Copiez et collez y cela :
#!/usr/bin/env bash
#creation variable OLDPUBIP servant de reference pour comparer avec la nouvelle IP.
OLDPUBIP=`cat ~/ip_pub_1`
echo "$OLDPUBIP ancienne IP"
#creation et initialisation variable count (compteur incrementiel)
COUNT=0
ENDCOUNT=2
# PUBIP est la variable qui contiendra l'adresse IP publique du site.
PUBIP=""
# bloc d'instruction visant a recuperer l'adresse IP Publique du site.
# PUBIP est la variable qui contiendra l'adresse IP publique du site.
PUBIP=""
# bloc d'instruction visant a recuperer l'adresse IP Publique du site.
# Utilisation d'une boucle until.
# test des variables COUNT ( COUNT = ENDCOUNT ) et PUBIP (PUBIP non nul)
# Si (if) cela echoue par whatIP, il la variable PUBIP (PUBIP est nulle) et dans ce cas recupere l'IP par monip
# Incrementation du compteur a la fin de chaque boucle (sinon, la boucle est infinie).
until [ "$COUNT" -eq "$ENDCOUNT" -o -n "$PUBIP" ]
do
PUBIP=`wget http://www.whatip.com ; grep -i "your IP: " index.html | grep -o "[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*"`
echo "$PUBIP par whatip"
sleep 3
if [ -z "$PUBIP" ]
then
PUBIP=`wget http://www.monip.org ; grep -i "IP : " index.html | grep -o " [0-9]*\.[0-9]*\.[0-9]*\.[0-9]*"`
echo "$PUBIP par monip"
else
echo "la variable est deja remplie"
fi
if [ -z "$PUBIP" ]
then
PUBIP=`wget -qO- icanhazip.com`
echo "$PUBIP par icanhazip.com"
else
echo "la variable est déjà remplie"
fi
echo " La variable de l'adresse IP contient : $PUBIP "
sleep 2
echo "le compteur est a $COUNT, la limite autorisee du compteur est $ENDCOUNT"
let COUNT=$COUNT+1
echo "Le nouveau compteur est a $ENDCOUNT"
done
#Fin du bloc d'instruction visant a recupere l'adresse IP publique.
echo affichage IP Publique
echo $PUBIP
# creation du fichier de reference ip_pub
echo $PUBIP > ~/ip_pub_2
# Bloc d'instruction visant a definir la conduite a tenir en fonction de l'adresse IP recuperee. Si un changement s'est produit, alors $PUBIP sera differente de l'ancienne adresse qui se trouvera dans la variable $OLDPUBIP
if [ "$PUBIP" = "$OLDPUBIP" ]
then echo " Adresse IP Publique inchangee."
sendEmail -s smtp.FAI.fr -f ADRESSE_MAIL@D_ENVOI.MACHIN -t ADRESSE_MAIL@DU_DESTINATAIRE.BIDULE -u 'Adresse IP Publique inchangee' -m $PUBIP
else echo " Adresse IP publique modifiee."
sendEmail -s smtp.FAI.fr -f ADRESSE_MAIL@D_ENVOI.MACHIN -t ADRESSE_MAIL@DU_DESTINATAIRE.BIDULE -u 'Adresse IP Publique modifiee' -m $PUBIP -a ~/ip_pub_1 ~/ip_pub_2
rm -f ~/ip_pub_1
mv ~/ip_pub_2 ~/ip_pub_1
fi
rm -f ~/index.html*
Syntaxe de sendEmail :
sendEmail -s SMTP -f FROM_@ -t TO_@ -u OBJET_entre_' -m CONTENU_DU_MESSAGE -a CHEMIN_DE_LA_PIECE_JOINTE
==== 4) Rendre le script exécutable : ====
chmod u+x ~/ip_pub.sh
==== 5) Automatiser ce script avec cron : ====
Lancement du script tous les jours à midi et demi :
crontab -e
A la fin du fichier ajouter :
30 12 * * * /home/UTILISATEUR/ip_pub.sh
Pour vous aider :
http://doc.ubuntu-fr.org/cron
http://www.openjs.com/scripts/jslibrary/demos/crontab.php