This site uses cookies! Learn More

Ce site utilise des cookies !

En continuant à utiliser ce site, vous vous engagez à nous permettre de stocker des cookies sur votre ordinateur.

 

Si nous utilisons des cookies et retenons des données anonymes, c’est pour nous aider à mieux gérer notre mesure d’audience, aider nos partenaires commerciaux à nous rémunérer et nos partenaires publicitaires à proposer des annonces qui vous correspondent.

 

Grâce à ces cookies, le forum est en mesure de savoir qui écrit un message et utile pour le système d'authentification.

 

En cliquant sur « J'accepte », vous acceptez l'utilisation par NAS-Forum de cookies publicitaires et de mesure d'audience fine.

Superthx

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

Messages recommandés

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 😀

 

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

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)

 

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
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!!!

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
Partager sur d’autres sites

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

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

 

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

Partager ce message


Lien à poster
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.

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

Partager ce message


Lien à poster
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

 

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

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.

Chargement