Superthx Posté(e) le 23 juillet 2019 Auteur Posté(e) le 23 juillet 2019 il y a 20 minutes, PPJP a dit : A tout hasard essayez de changer le nom du fichier boot.sh en S97boot.sh. ce qui ce passe c'est que j'ai plusieurs dossiers rc.d /usr/local/etc/rc.d /usr/syno/etc/rc.d /usr/syno/etc.defaults/rc.d /usr/local/etc/rc.d => VIDE /usr/syno/etc/rc.d => Plusieurs fichier du type S99xxx.sh /usr/syno/etc.defaults/rc.d => Plusieurs fichier du type S99xxx.sh Lequel choisir ? 0 Citer
PPJP Posté(e) le 23 juillet 2019 Posté(e) le 23 juillet 2019 (modifié) Pour ma part j'aurais tout mis dans /usr/local/etc/rc.d Mais avec des numérotations différentes S95XXX.sh, S96XXX.sh, S97XXX.sh... Le chiffre sert à définir l'ordre d'exécution qui peut être important. Si ce n'est pas vous qui avez implanté ces script laissz les en place! Modifié le 23 juillet 2019 par PPJP 0 Citer
Superthx Posté(e) le 23 juillet 2019 Auteur Posté(e) le 23 juillet 2019 il y a 1 minute, PPJP a dit : Pour ma part j'aurais tout mis dans /usr/local/etc/rc.d Je vais tester de suite..... 0 Citer
PPJP Posté(e) le 23 juillet 2019 Posté(e) le 23 juillet 2019 Attention mon précédent message a été édité! 0 Citer
Superthx Posté(e) le 23 juillet 2019 Auteur Posté(e) le 23 juillet 2019 Je confirme sous SRM c'est dans /usr/syno/etc/rc.d qu'il faut mettre le fichier 0 Citer
PPJP Posté(e) le 23 juillet 2019 Posté(e) le 23 juillet 2019 Pour Superthx Avez-vous essayé avec le script dans /usr/local/etc/rc.d ? Car ii me semble que le dossier /usr/syno/etc/rc.d peut être écrasé lors de mises à jour du SRM. Ce qui ne doit pas être le cas pour le dossier /usr/local/etc/rc.d Pour Zeus J'ai installé le script sur mon NAS (j'ai poussé le vice jusqu'à reproduire votre arborescence /volume1/administration/check_ip_wan) Et jamais l'info "Adresse IP non changée !" ne s'est retrouvée dans le fichier ip.log; malgré de très nombreux essais! Pour vous deux Ce script est-il destiné uniquement à envoyer un Mail ou l'IP detectée est-elle destinée à d'autres utilisations? Car si l'IP fournie par Amazon ne peut être obtenue( site HS, pb DNS, perte connexion...): current_ip sera nul donc changement d'IP décrété et le fichiet ip.txt sera vide un envoi de Mail sera tenté Une ébauche de solution possible pour remédier à ce pb; #!/bin/bash ##################### ### CONFIGURATION ### ##################### #to="destinataire@ndd.tld" #from="Serveur xxx <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_valide=1 nbTest=5 until [[ $current_ip_valide -eq 0 || $nbTest -eq 0 ]];do current_ip=`curl -silent -L http://checkip.amazonaws.com|tail -n 1` if [[ $current_ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then current_ip_valide=0 else sleep 10 let nbTest-- fi done if [ $current_ip_valide -eq 0 ]; then 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 !" exit 0 fi else echo -e "Ip incorrecte: $current_ip" echo "Impossible d'acquerir l'IP WAN !" # on peut prévoir l'envoi d'un mail (inutile si la connexion internet est tombée!) # on peut prévoir une inscription dans le fichier log exit 1 fi 0 Citer
unPixel Posté(e) le 23 juillet 2019 Posté(e) le 23 juillet 2019 (modifié) En effet, j'ai pensé dans l'élaboration de mon script à palier à un soucis avec le service Amazon. A la place de ce que tu proposes dans ton script, j'avais plutôt pensé à récupérer l'info sur deux sites différents et une troisième vérification depuis le shell avec la commande : curl ifconfig.me Ensuite, faire une comparaison des trois et si tout est ok alors on valide l'adresse IP dans le fichier et on suit la procédure. Mais par manque de connaissances, je suis pas allé plus loin 😞 Citation Ce script est-il destiné uniquement à envoyer un Mail ou l'IP detectée est-elle destinée à d'autres utilisations? Dans mon cas personnel, elle me permettrait surtout de palier rapidement à un changement d'IP côté provider car SFR fournit une IP fixe avec la fibre mais ne la garantie pas 😞 Certains ont eu la surprise de la voir changer mais c'est vraiment pas régulier. Pas envie non plus de passer par un service DynDNS. Et puis c'est amusant 😂 Modifié le 23 juillet 2019 par Zeus 0 Citer
PPJP Posté(e) le 23 juillet 2019 Posté(e) le 23 juillet 2019 SFR ne fournit pas d'API pour gérer le DNS? Pour ma part je tiens mon DNS à jour chez Gandi grâce à leur API ( ils ne fournissent pas de DDNS à ma connaissance). Le script qui surveille l'adresse tourne sur environ une douzaine de site interrogés successivement. Si l'un ne répond pas on passe au suivant (cycle de 5mn; 3 sites maxi testés à chaque boucle). 0 Citer
unPixel Posté(e) le 23 juillet 2019 Posté(e) le 23 juillet 2019 (modifié) Mon provider de domaine est OVH 😉 Quant à SFR, je reçois juste la fibre mais leurs appareils sont dans leurs cartons. Je veux même pas en entendre parler... Citation Le script qui surveille l'adresse tourne sur environ une douzaine de site interrogés successivement. Tu parles de quel script là stp PPJP qu'on se comprenne ? Modifié le 23 juillet 2019 par Zeus 0 Citer
PPJP Posté(e) le 23 juillet 2019 Posté(e) le 23 juillet 2019 C'est un ensemble de plusieurs scripts Python3 qui, entre autre, tiennent à jour mon DNS chez Gandi via leur API. Dans ce cadre je surveille toutes les 5 minutes (paramétrable) mon IP externe. Cette partie est similaire à votre script. Il se sert d'une douzaine de sites retournant l'IP. A chaque boucle il interroge un site et si pas de réponse, il passe au suivant avec maxi 3 sites par boucle. A la boucle suivante, il sollicite d'autres sites. Et comme j'aime bien me compliquer la vie je trace pas mal de choses: historique des IP fournies, sites n'ayant pas répondu avec motif, adresse lue toutes les 5Mn et site ayant fournit cette IP.... Autant dire qu'il n'est pas exploitable par quelqu'un d'autre! Mais il est certainement possible de réaliser en shell une boucle sur le même principe ou approchant. Enfin je précise que ce script est lancé journellement à 00H00at et se stoppe lorsqu’il n'a plus le temps de réaliser une nouvelle boucle. Il est également lancé au boot. 0 Citer
unPixel Posté(e) le 23 juillet 2019 Posté(e) le 23 juillet 2019 Ok, merci pour les précisions 😉 Très complet comme script ! 0 Citer
PPJP Posté(e) le 23 juillet 2019 Posté(e) le 23 juillet 2019 Et encore ce n'etait qu'un aperçu! Il faut dire que ma spécialité et mon plaisir sont de modifier, compléter des scripts qui fonctionnent bien pour en faire des scripts qui bug.. C'est comme cela que j'apprends! 0 Citer
unPixel Posté(e) le 24 juillet 2019 Posté(e) le 24 juillet 2019 C'est ce que je fais aussi. Mais en moins bien que toi 😂 0 Citer
Superthx Posté(e) le 24 juillet 2019 Auteur Posté(e) le 24 juillet 2019 Il y a 8 heures, PPJP a dit : Avez-vous essayé avec le script dans /usr/local/etc/rc.d ? Oui et cela ne marche pas sur mon RT2600ac. A moins que je me trompe. C'est pour cela que j'abandonne le script au démarrage et préfére crontab. Il y a 8 heures, PPJP a dit : Car si l'IP fournie par Amazon ne peut être obtenue( site HS, pb DNS, perte connexion...): current_ip sera nul donc changement d'IP décrété et le fichiet ip.txt sera vide un envoi de Mail sera tenté En effet. Il faudra travailler sur cette partie. 0 Citer
unPixel Posté(e) le 24 juillet 2019 Posté(e) le 24 juillet 2019 Je suis justement en train de faire des essais de comparaison entre trois services dont un local depuis le shell avec la commande que j'ai mit au dessus. Mon but, que les trois adresses IP s'inscrivent dans un fichier texte temporaire, qu'une comparaison soit faite et que si l'IP est la même sur les trois alors elle est validée et s'inscrit dans le fichier texte ip.txt J'aimerai à terme ajouter aussi l'obligation que le test doit être fait sur au moins deux services si un des trois est défaillant. Bref, j'ai du boulot dans ma recherche d'infos 🙂 0 Citer
PPJP Posté(e) le 24 juillet 2019 Posté(e) le 24 juillet 2019 (modifié) Bonjour ZEUS, Comme vous passez beaucoup de temps à aider les autres, je vais essayer de vous en faire gagner un petit peu. L’ébauche de script,ci-dessous, correspondrait-elle à ce que vous envisagez? Attention, je viens de l’écrire et je ne l'ai pas encore testé! Pour consultation ou lancement à vos risques et périls!!! #!/bin/bash ##################### ### CONFIGURATION ### ##################### DESTINATAIRE="destinataire@ndd.tld" EMETTEUR="Serveur xxx <expediteur@ndd.tld>" # listes de sites retournant l'IP WAN SITES=("http://checkip.amazonaws.com" "https://api.ipify.org/" "http://ipecho.net/plain" "http://icanhazip.com/" "http://ipinfo.io/ip" "https://wtfismyip.com/text" "http://whatismyip.akamai.com/" "https://ipv4bot.whatismyipaddress.com" "https://www.dsfc.net/ipinfo.php" "http://api.ipaddress.com/myip") CONFIRMATION=(" " " ") # fichier de memo de l'IP MEMOIPFILE="/volume1/administration/check_ip_wan/ip.txt" # fichier de log LOGFILE="/volume1/administration/check_ip_wan/ip.log" # Fichier teeporaire poor messagerie MSGFILE="/volume1/administration/check_ip_wan/message.txt" CYCLESURVEY=10 #300 # périodicité de vérification de l'IP WAN RECONFIRMTEMPO=5 #tempo avant nouvel essai si pas 3 nouvelles IP identiques de suite REVALIDTEMPO=2 #tempo avant nouvel essai si IP lue est invalide DUREESCRIPT=60 #Solution temporaire pour MAP ################# ### FONCTIONS ### ################# memoriser_IP() { echo $new_ip > $MEMOIPFILE } lire_old_ip() { if test -f "$MEMOIPFILE"; then old_ip=`cat $MEMOIPFILE` #lecture ancienne IP si fichier ip.txt existe fi } lire_ip_wan() { nbTest=0 ip_lue_valide=1 until [[ $ip_lue_valide -eq 0 || $nbTest -eq 3 ]];do ip_lue=`curl -silent -L ${SITES[($[($1 + $nbTest) % $nbSites])]}|tail -n 1` if [[ $ip_lue =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then ip_lue_valide=0 else ((nbTest++)) sleep 2 fi idSite=($[($1 + $nbTest) % $nbSites]) done } confirmer_new_ip() { ip_confirmee=1 bcl=0 while [[ $bcl -lt 2 ]];do sleep 1 ((idSite++)) lire_ip_wan $idSite if [ $ip_lue_valide -eq 0 ]; then CONFIRMATION[$bcl]=$ip_lue else CONFIRMATION[$bcl]=" " fi ((bcl++)) done if [[ $new_ip=CONFIRMATION[0] && $new_ip=CONFIRMATION[1] ]];then ip_confirmee=0 fi } envoi_mail() { # 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 : $new_ip\r\n\r\nCordialement..."` echo -e "to:${DESTINATAIRE}">${MSGFILE}; echo -e "from:${EMETTEUR}">>${MSGFILE}; echo -e "subject:${sujet} ">>${MSGFILE}; echo -e "${body}" >> ${MSGFILE}; ssmtp -v ${DESTINATAIRE} < ${MSGFILE}; rm ${MSGFILE} } inscription_log() { echo "----------------------" >> $LOGFILE echo $(date +"%d/%m/%Y à %H:%M:%S") >> $LOGFILE echo "----------------------" >> $LOGFILE echo ${sujet} >> $LOGFILE echo "Votre ancienne adresse IP était : $old_ip" >> $LOGFILE echo "Votre nouvelle adresse IP est : $new_ip" >> $LOGFILE } ############### ### SCRIPT ### ############### nbSites=${#SITES[@]} idSite=$(( $RANDOM % $nbSites )) lire_old_ip while [[ $SECONDS -lt $DUREESCRIPT ]];do lire_ip_wan $idSite tempo=$CYCLESURVEY if [ $ip_lue_valide -eq 0 ]; then if [ "${old_ip}" != "${ip_lue}" ]; then new_ip=$ip_lue confirmer_new_ip if [ $ip_confirmee -eq 0 ]; then memoriser_IP sujet="Votre adresse IP publique (IPv4) a changé !" inscription_log envoi_mail lire_old_ip else tempo=$RECONFIRMTEMPO fi fi else tempo=$REVALIDTEMPO fi sleep $tempo done exit 0 Modifié le 25 juillet 2019 par PPJP 0 Citer
unPixel Posté(e) le 24 juillet 2019 Posté(e) le 24 juillet 2019 Bonjour PPJP, Merci beaucoup pour l'attention, ça m'enlève en effet une belle épine du pied. Et tutoie moi stp, je suis contre le vouvoiement qui pour moi ne représente pas forcément du respect. Il faut vraiment que j'arrête de faire mes autres activités et que j'apprenne bash 😞 J'ai testé le script et malheureusement, dès le départ il y a une coquille. Le fichier ip.txt ne se créer pas. Alors j'ai modifié quelques petites choses au niveau des noms de fichiers et répertoires de destination mais je ne pense vraiment pas que ça vienne de là. Le fichier log lui est bien créé. 0 Citer
PPJP Posté(e) le 25 juillet 2019 Posté(e) le 25 juillet 2019 Bonjour Zeus, Désolé, hier soir j'ai raté ta réponse. Comme je te l'ai déjà dit le tutoiement n'est pas naturel chez moi. J'essaie de m'en souvenir quand je t'écrit, mais il y a des oublis (l'âge!!!) Excuse moi pour les prochains possibles oublis. Il y a 8 heures, Zeus a dit : Il faut vraiment que j'arrête de faire mes autres activités et que j'apprenne bash 😞 Bon courage, personnellement cela ne me tente pas, c'est trop indigeste. Je t'avais prévenu que le script n'était pas testé, mais que c'était pour consultation pour savoir si le pricipe te convenait. Le tester était à tes risques et périls. Je viens de le tester rapidement, il y avait quelques petites erreurs. Dont notamment une boucle for mal maitrisée. Il semble dégrossi maintenant et tu peux le tester à ton tour. J'ai edité mon précédent message pour y mettre le script corrigé. S'il te convient il faudra le finaliser pour qu'il tourne en permanence en tache de fond. Par exemple mon script Python est lancé journellement par le gestionnaire de tâche à 00H00 et au boot. Il s’arrête quand il n'a plus le temps de réaliser une nouvelle boucle. 0 Citer
unPixel Posté(e) le 25 juillet 2019 Posté(e) le 25 juillet 2019 (modifié) Bonjour PPJP, Indigeste mais utile. A moins que tu connaisses une alternative à me recommander sur Bash, je ne pense pas avoir le choix 🙂 Pour le script, je viens de tester avec mes petites modifications et voilà le retour : Sortie standard/erreur : [<-] 220 smtp7.infomaniak.ch ESMTP Infomaniak Network Relay Mail Servers; Thu, 25 Jul 2019 09:49:32 +0200 [->] EHLO Zeus [<-] 250 HELP [->] STARTTLS [<-] 220 2.0.0 Ready to start TLS [->] EHLO Zeus [<-] 250 HELP [->] AUTH LOGIN [<-] 334 VXNlcm5hbWU6 [->] eWFubmljay5sGDJvdXKsLmZy [<-] 334 UGFzc3mQ6 [<-] 235 2.0.0 OK Authenticated [->] MAIL FROM:<demo@demo.com> [<-] 250 2.1.0 <sdemo@demo.com>… Sender ok [->] RCPT TO:<demo@demo.com> [<-] 250 2.1.5 <demo@demo.com>… Recipient ok [->] DATA [<-] 354 Enter mail, end with "." on a line by itself [->] Received: by Zeus (sSMTP sendmail emulation); Thu, 25 Jul 2019 09:49:32 +0200 [->] Date: Thu, 25 Jul 2019 09:49:32 +0200 [->] to:demo@demo.com [->] from:Serveur Zeus <demo@demo.com> [->] subject:Votre adresse IP publique (IPv4) a changé ! [->] Bonjour, [->] Votre adresse IP publique a changé ! [->] [->] Votre ancienne adresse IP était : xx.xxx.xxx.xx [->] Votre nouvelle adresse IP est : xx.xxx.xxx.xx [->] [->] Les fichiers 'ip-actuelle.txt' et 'ip-change.log' ont été mis à jour. [->] [->] Cordialement... [->] [->] . [<-] 250 2.0.0 x6P7nWVG148208 Message accepted for delivery [->] QUIT [<-] 221 2.0.0 smtp7.infomaniak.ch closing connection /volume1/administration/verification_ip_wan/test.sh: line 128: syntax error near unexpected token `done' /volume1/administration/verification_ip_wan/test.sh: line 128: `done' Modifié le 25 juillet 2019 par Zeus 0 Citer
PPJP Posté(e) le 25 juillet 2019 Posté(e) le 25 juillet 2019 Je viens seulement de connecter. Édite rapidement ton dernier message, des identifiants et mot de passe y figurent en clair! Tu n'as pas testé ma dernière version de script? 0 Citer
Superthx Posté(e) le 25 juillet 2019 Auteur Posté(e) le 25 juillet 2019 Cool! Je vais tester plus tard 0 Citer
unPixel Posté(e) le 25 juillet 2019 Posté(e) le 25 juillet 2019 il y a 39 minutes, PPJP a dit : Je viens seulement de connecter. Édite rapidement ton dernier message, des identifiants et mot de passe y figurent en clair! Tu n'as pas testé ma dernière version de script? Si, j'ai bien essayé ton précédent script 🙂 Et justement, je te retourne l'erreur que je reçois. D'ailleurs, je te rassure mais j'avais modifié les données et en aucun cad il n'y a eu en clair mes identifiants 😉 D'ailleurs, il n'y a même pas zeus dans mon identifiant. Ça serait trop facile sinon... 0 Citer
PPJP Posté(e) le 25 juillet 2019 Posté(e) le 25 juillet 2019 As_tu bien pris le script après que j'ai édité mon message? Qu'as tu modifié dans le script hormis les chemins des divers fichiers et les données de la messagerie? Car chez moi, il fonctionne sans erreur. Éventuellement renvois moi en MP le fichier que tu viens de tester avec pour seules modifs celle de la messagerie. 0 Citer
unPixel Posté(e) le 25 juillet 2019 Posté(e) le 25 juillet 2019 Attends, pour être sûr, je refais les manip en reprenant le code. Je te tiens au courant (peut-être en éditant ce post). 0 Citer
Messages recommandés
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.