Aller au contenu

[TUTO] Envoi de mail de changement de IP pour DSM et SRM


Superthx

Messages recommandés

J'ai été obligé de m'absenter rapidement cet après-midi.

Je vous ai donc lâchement quitté en plein milieu d’échanges.

Je vous présente mes excuses.

Pour me faire pardonner une nouvelle version de votre script (il restait quelques bugs)

#!/bin/bash

#####################
### CONFIGURATION ###
#####################

to="destinataire@ndd.tld"
from="Serveur xxx <expediteur@ndd.tld>"
subject="Votre adresse IP publique (IPv4) a changé !\r\n"

# destination du message temporaire
messageFile="/volume1/administration/check_ip_wan/message.txt"
# fichier de memo de l'IP
memoIP="/volume1/administration/check_ip_wan/ip.txt"

##############
### SCRIPT ###
##############
current_ip=`curl -silent -L http://checkip.amazonaws.com|tail -n 1`

if test -f "$memoIP"; then
    old_ip=`cat $memoIP` #lecture ancienne IP si fichier ip.txt existe
fi

if [ "${old_ip}" != "${current_ip}" ]; then
    # création du fichier ip.txt et envoi d'un mail avec les informations
    echo $current_ip > $memoIP
    
    # contenu du message
    body=`printf "Bonjour,\r\n\rVotre adresse IP publique a changé !\r\n\r\nVotre ancienne adresse IP était : $old_ip\r\nVotre nouvelle adresse IP est : $current_ip\r\n\r\nCordialement..."`
    echo -e "to:${to}">${messageFile};
    echo -e "from:${from}">>${messageFile};
    echo -e "subject:${subject}">>${messageFile};
    echo -e "${body}" >> ${messageFile};
    ssmtp -v ${to} < ${messageFile};
    rm ${messageFile}
else
    echo "Adresse IP non changée !"
fi
exit 0

Pour ce qui concerne le lancement du script au démarrage, au moins pour DSM (je n'ai pas de routeur Syno), il suffit de le lancer par le planificateur de tâches.

Faire créer puis choisir tâche déclenchée.  (cela est sans doute similaire sur le SRM)

 

Lien vers le commentaire
Partager sur d’autres sites

Sur SRM, il n'y a pas de planificateur de tâches comme sur DSM 😉

J'étais justement en train de retravailler mon script en cherchant comment intégrer les logs.J'ai ça en gros à intégrer :

# journal
	
if	[ "$old_ip" != "$current_ip" ]; then
	
	echo " " >> $journal
	echo "----------------------" >> $journal
	echo $(date +"%d/%m/%Y à %H:%M:%S") >> $journal
	echo "----------------------" >> $journal
	echo $subject >> $journal
	echo Votre ancienne adresse IP était : $old_ip >> $journal
	echo Votre nouvelle adresse IP est : $current_ip >> $journal
fi

 

# Cible du fichier log (création automatique du fichier)
journal=/volume1/administration/check_ip_wan/ip.log

Merci par avance pour ton aide 🙂

Modifié par Zeus
Lien vers le commentaire
Partager sur d’autres sites

Je ne parviens que tres difficilement à naviguer sur ce forum, qu'en est-il pour vous?

Pouvez-vous tester cette nouvelle version du script?

#!/bin/bash

#####################
### CONFIGURATION ###
#####################

to="destinataire@ndd.tld"
from="Serveur xxx <expediteur@ndd.tld>"
subject="Votre adresse IP publique (IPv4) a changé !\r\n"

# destination du message temporaire
messageFile="/volume1/administration/check_ip_wan/message.txt"
# fichier de memo de l'IP
memoIP="/volume1/administration/check_ip_wan//ip.txt"
# fichier de log
journal="/volume1/administration/check_ip_wan/ip.log"

##########
### SCRIPT ###
##############
current_ip=`curl -silent -L http://checkip.amazonaws.com|tail -n 1`

if test -f "$memoIP"; then
    old_ip=`cat $memoIP` #lecture ancienne IP si fichier ip.txt existe
fi

if [ "${old_ip}" != "${current_ip}" ]; then
    # création du fichier ip.txt et envoi d'un mail avec les informations
    echo $current_ip > $memoIP
    
    # contenu du message
    body=`printf "Bonjour,\r\n\rVotre adresse IP publique a changé !\r\n\r\nVotre ancienne adresse IP était : $old_ip\r\nVotre nouvelle adresse IP est : $current_ip\r\n\r\nCordialement..."`
    echo -e "to:${to}">${messageFile};
    echo -e "from:${from}">>${messageFile};
    echo -e "subject:${subject}">>${messageFile};
    echo -e "${body}" >> ${messageFile};
    ssmtp -v ${to} < ${messageFile};
    rm ${messageFile}
    echo "----------------------" >> $journal
    echo $(date +"%d/%m/%Y à %H:%M:%S") >> $journal
    echo "----------------------" >> $journal
    echo $subject >> $journal
    echo "Votre ancienne adresse IP était : $old_ip" >> $journal
    echo "Votre nouvelle adresse IP est :  $current_ip" >> $journal
else
    echo "Adresse IP non changée !"
fi
exit 0


PS

PS pour @Zeus

Concernant le script wilscard , on peut passer un paramètre(pour test) pour avoir un renouvellement plus fréquent.

Déboguer en faisant un test tous les 85 jours n'est pas optimal!!!

Lien vers le commentaire
Partager sur d’autres sites

Pour wildcard, on en reparle en MP si tu veux bien histoire de pas pourrir ce topic 😉

Pour ton script, ok je vais le tester, j'avais pas fait comme toi pour la partie log. Ça fonctionnait mais mon script me semblait bizarre...

Dans ton dernier script, je constate une toute petite faute de frappe.

Citation

# fichier de memo de l'IP
memoIP="/volume1/administration/check_ip_wan//ip.txt"

Je vais le tester 🙂

EDIT 1 : je constate aussi qu'il ne faudrait pas que la ligne echo "Adresse IP non changée !" soit dans le fichier log. Pour un test toutes les minutes, c'est beaucoup de lignes inutiles dans le fichier log.

EDIT 2 : j'ai oublié de te préciser mais oui moi aussi j'ai eu une perte du forum tout à l'heure. Ça merdouille pas mal ces dernières semaines...

Modifié par Zeus
Lien vers le commentaire
Partager sur d’autres sites

J'ai testé ton script est il fonctionne. Comme je l'ai dit juste au dessus, j'ai le fichier log qui se remplit à vitesse grand V à cause de l'echo que j'ai cité.

Voici le script que j'ai légèrement modifié :

#!/bin/bash

### CONFIGURATION ###

to="destinataire@ndd.tld"
from="Serveur xxxx <expediteur@ndd.tld>"
subject="Votre adresse IP publique (IPv4) a changé !"

# destination du message temporaire
messageFile="/volume1/administration/check_ip_wan/message.txt"
# fichier de memo de l'IP
memoIP="/volume1/administration/check_ip_wan/ip.txt"
# fichier de log
journal="/volume1/administration/check_ip_wan/ip.log"

### SCRIPT ###

current_ip=`curl -silent -L http://checkip.amazonaws.com|tail -n 1` # récupération de l'adresse ip sur un service d'Amazon

if test -f "$memoIP"; then
    old_ip=`cat $memoIP` # lecture ancienne adresse IP si le fichier ip.txt existe
fi

if [ "${old_ip}" != "${current_ip}" ]; then
    # création du fichier ip.txt et envoi d'un mail avec les informations
    echo $current_ip > $memoIP
    
    # contenu du message
    body=`printf "Bonjour,\r\n\rVotre adresse IP publique a changé !\r\n\r\nVotre ancienne adresse IP était : $old_ip\r\nVotre nouvelle adresse IP est : $current_ip\r\n\r\nCordialement..."`
    echo -e "to:${to}">${messageFile};
    echo -e "from:${from}">>${messageFile};
    echo -e "subject:${subject}">>${messageFile};
    echo -e "${body}" >> ${messageFile};
    ssmtp -v ${to} < ${messageFile};
    rm ${messageFile}
    
    # enregistrement dans le journal
    echo " " >> $journal
    echo "----------------------" >> $journal
    echo $(date +"%d/%m/%Y à %H:%M:%S") >> $journal
    echo "----------------------" >> $journal
    echo $subject >> $journal
    echo "Votre ancienne adresse IP était : $old_ip" >> $journal
    echo "Votre nouvelle adresse IP est :  $current_ip" >> $journal
fi
exit 0

 

Modifié par Zeus
Lien vers le commentaire
Partager sur d’autres sites

Ce que tu appelles fichier de log c'est bien /volume1/administration/check_ip_wan/ip.log?

Si c'est bien cela, je ne comprend vraiment pas comment cette info puisse s'y retrouver!!!

Elle ne devrait qu'apparaitre dans le terminal et donc visible que si le script est lancé en SSH.

J'avais les yeux bouchés car je ne trouvais les modifs de fichier!!!

Modifié par PPJP
Lien vers le commentaire
Partager sur d’autres sites

Quand j'aurais un peu de temps j'installerai ce script sur mon NAS, pour pouvoir le lancer.

Car la, je ne comprends vraiment pas.

Je vais pouvoir revenir un peu au débogage de shell (pouahh!).

Mais ce ne sera probablement que dans quelque temps, car comme cette instruction est supprimée, cela n'a aucun caractère d'urgence.

Je ferai un retour de mes test.

Je vais quitter, bonne nuit.

Lien vers le commentaire
Partager sur d’autres sites

Hey......Y'a du chagement depuis hier soir 😅

Je vais tester cela un peu plus tard. Merci pour le suivi je corrigerai cela un peu plus tard.

il y a 7 minutes, PPJP a dit :

Ce script avec suffixe .,sh permission 755 devra avoir les options start et stop

Est-ce que tu as un exemple "simple" ? Car j'ai une idée en tête mais il me faut un exemple avec start et stop,

Par exemple un fichier "boot.sh" en chmod 755 dans /usr/local/etc/rc.d.

avec comme ceci à l'interieur :

#!/bin/bash
touch /volume1/test.txt

 

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Si votre script est nommé check_ip_wan.sh et situé dans le dossier  /volume1/administration/check_ip_wan, vous pouvez tester avec le fichier boot.sh contenant:

case  $1 in
start)
          /volume1/administration/check_ip_wan/check_ip_wan.sh
         ;;
stop)
         ;;
         *)
echo "Usages: $0 [start|stop]"
         ;;
esac

Lien vers le commentaire
Partager sur d’autres sites

il y a 1 minute, PPJP a dit :

Bonjour,

Si votre script est nommé check_ip_wan.sh et situé dans le dossier  /volume1/administration/check_ip_wan, vous pouvez tester avec le fichier boot.sh contenant:

case  $1 in
start)
          /volume1/administration/check_ip_wan/check_ip_wan.sh
         ;;
stop)
         ;;
         *)
echo "Usages: $0 [start|stop]"
         ;;
esac

Merci

Lien vers le commentaire
Partager sur d’autres sites

il y a 29 minutes, Superthx a dit :

Mais au demarrage du routeur il fait que dalle.

Comment le savez_vous?

S'il n'y a pas de changement d'IP aucun fichier n'est modifié ni mail d'expédié.

Pour faire un test laissant des traces supprimez le fichier

/volume1/administration/check_ip_wan/ip.txt

avant reboot du routeur

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.