Aller au contenu

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

Featured Replies

Posté(e)
  • Auteur
il y a 2 minutes, Zeus a dit :

Oui c'est ça. La tout première fois d'ailleurs, il crée le fichier mais ensuite il ne fait que modifier l'IP a l'intérieur si besoin.

OK. Ça te vas si je reprends ton script pour le tuto. Je le trouve plus élégant 😀

 

  • Réponses 105
  • Vues 20.1 k
  • Créé
  • Dernière réponse

Meilleurs contributeurs dans ce sujet

Most Popular Posts

  • Bien entendu, il est là pour ça. Et puis c'est pas le mien... Je n'ai fait que prendre plusieurs bouts par ci par là et les assembler.

  • En effet, fallait le trouver ce genre de bug... Je ne sais plus laquelle c'est sur les nombreuses que tu as ajouté au script. Mais ça me ramenait bien sur Google lors de mes tests au niveau de

  • Voila qui devrait répondre à ton besoin, commenté (un peu) en plus! #!/bin/bash #shortsurvip.sh.sh v0.0.2 ##################### ### CONFIGURATION ### ##################### DEST

Images postées

Posté(e)

Bien entendu, il est là pour ça. Et puis c'est pas le mien... Je n'ai fait que prendre plusieurs bouts par ci par là et les assembler.

Posté(e)

Non mais as-tu essayé de consulter crontab ?

vim /etc/crontab

 

Posté(e)
  • Auteur

Non. Vraiment au demarrage. Je me souviens qu’il fallait placer un truc du genre dans le dossier rc.d

Posté(e)

Possible mais ça je sais pas. Et Synology change tellement de choses après leurs majs que c'est dure de suivre...

Je suis en train d'essayer d'améliorer le script en ajoutant un fichier log pour mémoriser tous les changements d'adresses.

Posté(e)

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)

 

Posté(e)

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

Posté(e)

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!!!

Posté(e)

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

Posté(e)

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

Posté(e)

Je n'ai rien compris!

L'info "Adresse IP non changée !" n'a aucune raison d'aller dans le fichier de log (/volume1/administration/check_ip_wan/ip.log)

Ce  script est lancé toutes les minutes? Pourquoi???

 

 

Posté(e)

J'ai lancé ce script à des fins de tests toutes les minutes.

Et pourtant, cette echo se retrouve bien dans le fichier log autant de fois que le script se lance et ne constate pas de changement d'ip.

 

Posté(e)

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

Posté(e)

Oui tout à fait, je parle bien de ip.log

L'info se retrouve bien dedans si l'ip ne change pas.

 

En modification, j'ai pas fait grand chose. J'ai surtout viré cette ligne echo.

Posté(e)

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.

Posté(e)

Bonjour,

Dans SRM, il devrait être possible de lancer ce script par un script à créer dans  /usr/local/etc/rc.d.
Ce script avec suffixe .,sh permission 755 devra avoir les options start et stop.

Posté(e)
  • Auteur

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

 

Posté(e)

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

Posté(e)
  • Auteur
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

Posté(e)
  • Auteur

Bizarre @PPJP, quand je lance le script "./boot.sh start" en chmod 755 dans /usr/local/etc/rc.d pas de probleme.

Mais au demarrage du routeur il fait que dalle.

Que se passe t'il ?

Posté(e)

Je ne sais pas et ne possède pas de routeur syno pour tester.

A tout hasard essayez de changer le nom du fichier boot.sh en S97boot.sh.

Posté(e)
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

Posté(e)

Ou un petit coup de vi sur le fichier ip.txt en changeant simplement un chiffre. Au prochain test, il fera son travail. C'est comme ça que je provoque l'envoi du mail et la génération du fichier log.

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…

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.