unPixel Posté(e) le 25 juillet 2019 Posté(e) le 25 juillet 2019 Bon alors voilà ce que je viens de faire : Copie du script Intégration dans mon serveur avec modification du dossier de destination et des deux adresses mails. Test Premier test, premier mail reçu alors que ça ne devrait logiquement pas. Il m'affiche rien comme première ip mais m'affiche l'actuelle dans la nouvelle. Pas de mail d'erreur de DSM par contre. Second test, mail reçu avec les bonnes infos et pas de mail d'erreur de DSM. J'ai par contre pas compris certaines choses. Ce test dure combien de temps ? Parce qu'il n'a pas l'air de s'arrêter et fonctionne en continu. 0 Citer
Superthx Posté(e) le 25 juillet 2019 Auteur Posté(e) le 25 juillet 2019 (modifié) @PPJP J'ai une erreur sur la ligne 11 ./test.sh: line 11: syntax error: unexpected "(" Est-ce que cela vous le fait aussi ? Modifié le 25 juillet 2019 par Superthx 0 Citer
PPJP Posté(e) le 25 juillet 2019 Posté(e) le 25 juillet 2019 (modifié) Le 25/07/2019 à 15:23, Zeus a dit : Premier test, premier mail reçu alors que ça ne devrait logiquement pas. Il m'affiche rien comme première ip mais m'affiche l'actuelle dans la nouvelle Le fichier mémorisant l'IP était absent ou vide Le 25/07/2019 à 15:23, Zeus a dit : Second test, mail reçu avec les bonnes infos et pas de mail d'erreur de DSM Il n'est pas prévu d'envoyer un mail en cas d'erreur. Le 25/07/2019 à 15:23, Zeus a dit : Ce test dure combien de temps ? Parce qu'il n'a pas l'air de s'arrêter et fonctionne en continu Le but étant de détecter un changement d'IP, il a été pensé pour tourner en continu. Avec un lancement par gestionnaire de tâche ou cron à 00H00. Il s’arrête de lui-même à l’approche de minuit, quelque soit l'heure où il a été lancé. Mais il est pour l'instant bricolé pour une durée d'environ une minute. Le 25/07/2019 à 16:49, Superthx a dit : J'ai une erreur sur la ligne 11 ./test.sh: line 11: syntax error: unexpected "(" Bizarre shell différent qui n'accepterait pas les tableaux??? Que donne en ligne de commande: tableau=("a" "z" "e" "r" "r" ) En prime nouvelle version avec plusieurs petites modifs et j'ai rajouter uni info de version pour que l'on puisse savoir de quoi nous parlons J'ai rajouté l’information IP sans changement dans la console pour pouvoir constater que le script tourne toujours. #!/bin/bash #survip.sh v0.1.1 ##################### ### 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/script/forum/survip/dsm/ip.txt" LOGFILE="/volume1/script/forum/survip/dsm/ip.log" # Fichier temporaire pour messagerie MSGFILE="/volume1/script/forum/survip/dsm/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 } horaire_fin_script() { t0=$(date +%s) h0=$(date +%T) hh=$((10#`echo ${h0:0:2}`)) mm=$((10#`echo ${h0:3:2}`)) ss=$((10#`echo ${h0:6:2}`)) #stop_max=$(($t0 - $hh*3600 - $mm*60 - $ss + 86400 - 90)) stop_max=$(($t0 + $DUREESCRIPT)) # pour MAP } ############## ### SCRIPT ### ############## nbSites=${#SITES[@]} idSite=$(( $RANDOM % $nbSites )) lire_old_ip horaire_fin_script tempo=0 fin_script=$(( $stop_max - $tempo )) while [[ $(date +%s) -lt $fin_script ]];do lire_ip_wan $idSite sleep $tempo 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 restant=$(($stop_max - $(date +%s))) done exit 0 Modifié le 26 juillet 2019 par PPJP script v0.1.1 0 Citer
Superthx Posté(e) le 25 juillet 2019 Auteur Posté(e) le 25 juillet 2019 il y a 3 minutes, PPJP a dit : Bizarre shell différent qui n'accepterait pas les tableaux??? Peut être... c'est avec sh pour RT2600acc je test plus tard sous DSM 0 Citer
PPJP Posté(e) le 25 juillet 2019 Posté(e) le 25 juillet 2019 OK. Tiens moi informé du résultat SVP 0 Citer
unPixel Posté(e) le 25 juillet 2019 Posté(e) le 25 juillet 2019 @PPJP : ce n'est pas tes adresses mails qui sont dans le script au moins ? Quand je parlais d'erreur, je parlais de DSM lui même qui dans le gestionnaire des tâches prévient des erreurs d’exécution d'un script par mail 🙂 Citation Le but étant de détecter un changement d'IP, il a été pensé pour tourner en continu. Avec un lancement par gestionnaire de tâche ou cron à 00H00. Il s’arrête de lui-même à l’approche de minuit, quelque soit l'heure où il a été lancé. Mais il est pour l'instant bricolé pour une durée d'environ une minute. Je le voyais pas comme ça pour ma part. Je voyais une tâche cron lancer le script toutes les X minutes (à programmer dans DSM) et que ce test durait pas plus de 10 secondes comme avant. Là, j'ai vraiment eu l'impression qu'il tournait en boucle. Je te dis ça parce que j'ai remarqué dans mon pi-hole une tentative régulière de liaison avec un domaine de Google or j'interdis pratiquement tous les domaines de cette boite. Et en y regardant de plus près, c'était une adresse contenue dans le script. Et même après avoir supprimé la tâche dans le gestionnaire des tâches, le script continuait de tourner et mon Pi-Hole affichait toujours cette url de google. Il m'a fallu redémarrer le NAS pour que ça s'arrête. J'ai bien essayer de trouver un processus à arrêter mais je ne voyais rien d'anormal dans htop. Je testerai ta nouvelle version 😉 0 Citer
unPixel Posté(e) le 25 juillet 2019 Posté(e) le 25 juillet 2019 Bon et bien j'ai testé et ça ne fonctionne pas du tout. Je ne sais pas ce qui se passe mais malgré que la tâche planifiée est créée, le script ne se lance pas. Je suis obligé de le lancer manuellement. Ensuite, voilà le fichier log avec deux tests espacés de deux minutes : ---------------------- 25/07/2019 à 23:53:34 ---------------------- Votre adresse IP publique (IPv4) a changé ! Votre ancienne adresse IP était : Votre nouvelle adresse IP est : 88.345.134.2 IP sans changement IP sans changement IP sans changement IP sans changement IP sans changement IP sans changement ---------------------- 25/07/2019 à 23:55:25 ---------------------- Votre adresse IP publique (IPv4) a changé ! Votre ancienne adresse IP était : 88.345.134.3 Votre nouvelle adresse IP est : 88.345.134.2 IP sans changement IP sans changement IP sans changement IP sans changement IP sans changement IP sans changement Comme tu peux le lire, il y a des entrées qui ne devraient pas être présentes. Et elles continuent à s'inscrire en ce moment même alors même que la tâche planifiée est supprimée. Il y a donc bien quelque chose en arrière plan qui tourne continuellement. Je vais maintenant chercher comment l'arrêter en ssh car là, je peux pas redémarrer (en plein backup...). 0 Citer
PPJP Posté(e) le 25 juillet 2019 Posté(e) le 25 juillet 2019 Il y a 1 heure, Zeus a dit : ce n'est pas tes adresses mails qui sont dans le script au moins ? SI!!! Oubli regretable! il y a une heure, Zeus a dit : Je ne sais pas ce qui se passe mais malgré que la tâche planifiée est créée, le script ne se lance pas. Je suis obligé de le lancer manuellement. Comme nous sommes en test, je l'ai toujours lancé manuellement et je pensais que tu faisait de même.. Je vais essayer de passer par le planificateur. Il y a 1 heure, Zeus a dit : Et en y regardant de plus près, c'était une adresse contenue dans le script. Tu peux la supprimer de la liste sans pb, mais laisser un espace entre chaque adresse. Il y a 1 heure, Zeus a dit : Comme tu peux le lire, il y a des entrées qui ne devraient pas être présentes Cela provient de l'ajout de cette info mise pour pouvoir constater que le script tourne toujours. Pour moi, elle n’apparait que dans la console, pas dans le fichier de log. Corriges la ligne, en fin de script; echo "IP sans changement" en echo "IP sans changement">/dev/null # pour MAP Il y a 1 heure, Zeus a dit : Et elles continuent à s'inscrire en ce moment même alors même que la tâche planifiée est supprimée La suppression d'une tâche n’arrête pas le ou les script lancés. Il y a 1 heure, Zeus a dit : Il y a donc bien quelque chose en arrière plan qui tourne continuellement Dans mes tests le script s’arrête bien au moment prévu En version " de test" celle que tu as arret après environ 1mn. en version" de surveillance" arrêt juste avant minuit. (nouveau test en cours actuellement pour revérification) Enfin une question comment as-tu lancé deux tests en deux minutes s'il n'y a pas d’arrêt des scripts? En manuel via deux consoles? Tu n’aurais pas plusieurs scripts qui tournent en même temps? 0 Citer
unPixel Posté(e) le 26 juillet 2019 Posté(e) le 26 juillet 2019 Citation Oubli regretable! En espérant que le cache de Google ou que d'autres robots n'aient pas eu le temps de passer par là 😞 Citation Tu peux la supprimer de la liste sans pb, mais laisser un espace entre chaque adresse. Oui c'est bien ce que j'avais fait ensuite 😉 Cette partie du script était compréhensible pour mon petit niveau. Citation Pour moi, elle n’apparait que dans la console, pas dans le fichier de log. Corriges la ligne, en fin de script; echo "IP sans changement" en echo "IP sans changement">/dev/null # pour MAP Ok je verrais ça dans la journée, là, je vais aller me coucher. Citation La suppression d'une tâche n’arrête pas le ou les script lancés. Oui oui je sais bien. Je me suis mal exprimé. Disons qu'à la fin de mes tests, je supprime la tâche planifiée qui m'a permit de faire les tests. Je pourrais tout aussi bien le faire manuellement via la console 🙂 Citation Tu n’aurais pas plusieurs scripts qui tournent en même temps? Des scripts, j'en ai quelques un oui qui tournent. Citation Enfin une question comment as-tu lancé deux tests en deux minutes s'il n'y a pas d’arrêt des scripts? En manuel via deux consoles? Je lance directement depuis le planificateur de tâche en cliquant sur exécuter ce qui revient au même que si je tape les deux fois la commande pour lancer le script. Je l'ai fait sur deux minutes d'intervalle car j'ai vu qu'il ne se lançait pas automatiquement malgré l'activation dans le planificateur de tâches. Or d'habitude, il n'y avait pas de soucis avec cette étape de lancement automatique. Citation En version " de test" celle que tu as arret après environ 1mn. en version" de surveillance" arrêt juste avant minuit. (nouveau test en cours actuellement pour revérification) Ok pour la version de test. Par contre, je comprend pas bien ta deuxième phrase. Ca veut dire que si je lance ce script en version "surveillance" à 00h00 par exemple, ce dernier va être en continu jusqu'à 23h59 pour ne pas dire 00h00 ? 0 Citer
PPJP Posté(e) le 26 juillet 2019 Posté(e) le 26 juillet 2019 il y a 7 minutes, Zeus a dit : Citation Tu n’aurais pas plusieurs scripts qui tournent en même temps? Des scripts, j'en ai quelques un oui qui tournent. Je voulais dire plusieurs instance de ce script. il y a 8 minutes, Zeus a dit : Par contre, je comprend pas bien ta deuxième phrase. Ca veut dire que si je lance ce script en version "surveillance" à 00h00 par exemple, ce dernier va être en continu jusqu'à 23h59 pour ne pas dire 00h00 ? C'est la principe d"un script de surveillance de tourner en tâche de fond, non? il y a 11 minutes, Zeus a dit : Citation Pour moi, elle n’apparait que dans la console, pas dans le fichier de log. Corriges la ligne, en fin de script; echo "IP sans changement" en echo "IP sans changement">/dev/null # pour MAP Ou plus simplement supprime la, ainsi que le else qui précède. 0 Citer
unPixel Posté(e) le 26 juillet 2019 Posté(e) le 26 juillet 2019 Citation Je voulais dire plusieurs instance de ce script. Absolument pas. Je n'ai qu'une instance 😉 Citation C'est la principe d"un script de surveillance de tourner en tâche de fond, non? Oui tout à fait mais je préfère que ce soit DSM qui gère ça et non le script lui même. J'aime pouvoir gérer mes services directement depuis le planificateur de tâches et que les scripts eux même ne prennent pas le dessus sur ma configuration demandée. Citation Ou plus simplement supprime la, ainsi que le else qui précède. Ok, je testerai ça ce soir 🙂 0 Citer
PPJP Posté(e) le 26 juillet 2019 Posté(e) le 26 juillet 2019 Bonsoir, Il y a 20 heures, Zeus a dit : Je l'ai fait sur deux minutes d'intervalle car j'ai vu qu'il ne se lançait pas automatiquement malgré l'activation dans le planificateur de tâches. Or d'habitude, il n'y avait pas de soucis avec cette étape de lancement automatique. Il est possible que tu n'ai pas eu de chance. J'ai trouvé un bug bien caché. Le script plantait presque immédiatement si au moment de son lancement les heures, les mimutes ou les secondes étaient égale à 7 ou 8. C'était peut-être les cas dans tes essais de lancement via le gestionnaire de tâche et pas lors des lancements manuels??? De plus c'était dans une ligne qui ne servait pas dans ton cas!!! Sinon le script est toujours OK pour moi! Il y a 23 heures, Zeus a dit : ---------------------- 25/07/2019 à 23:53:34 ---------------------- Votre adresse IP publique (IPv4) a changé ! Votre ancienne adresse IP était : Votre nouvelle adresse IP est : 88.345.134.2 IP sans changement IP sans changement IP sans changement IP sans changement IP sans changement IP sans changement ---------------------- 25/07/2019 à 23:55:25 ---------------------- Votre adresse IP publique (IPv4) a changé ! Votre ancienne adresse IP était : 88.345.134.3 Votre nouvelle adresse IP est : 88.345.134.2 IP sans changement IP sans changement IP sans changement IP sans changement IP sans changement IP sans changement Le nombre" d'entrées parasites", cohérent avec la durée prévue, environ (1mn), semblent pourtant montrer que le script s’arrête bien. Il y a 23 heures, Zeus a dit : Et en y regardant de plus près, c'était une adresse contenue dans le script. Et même après avoir supprimé la tâche dans le gestionnaire des tâches, le script continuait de tourner et mon Pi-Hole affichait toujours cette url de google. Quelle adresse? Il y a 8 heures, Zeus a dit : Oui tout à fait mais je préfère que ce soit DSM qui gère ça et non le script lui même. J'aime pouvoir gérer mes services directement depuis le planificateur de tâches et que les scripts eux même ne prennent pas le dessus sur ma configuration demandée. Je ne vois pas bien la différence entre un script tournant la journée complète et un script lancé toutes les minutes. Quel intérêt y vois-tu, à part un arrêt plus rapide du script? Enfin la question la plus importante! Que veux-tu que ce script fasse? Juste une vérification d'ip et le renseignement de cette IP dans un fichier si elle est cohérente avec deux autres sites différents? Mais dans ce cas que fait-on si: un ou plusieurs sites ne répondent pas on détecte un changement d'IP qui n'est pas confirmé simultanément par les deux autres etc ... Exprime ton besoin et nous corrigerons le script en conséquence. Mais il ne durera pas systématiquement mois de 10s. La comparaison sur trois sites, avec un timeout de généralemnt 30s chacun, peut facilement excédé ce temps. En attendant, j’édite mon post avec la version corrigée du script (qui indique maintenant une version) 0 Citer
unPixel Posté(e) le 26 juillet 2019 Posté(e) le 26 juillet 2019 Citation J'ai trouvé un bug bien caché. En effet, fallait le trouver ce genre de bug... Citation Quelle adresse? 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 mon serveur Pi-Hole. Citation Quel intérêt y vois-tu, à part un arrêt plus rapide du script? Et bien déjà ça et c'est pas mal 🙂 Citation Que veux-tu que ce script fasse? Je voyais ça comme ça en gros : Vérification de l'adresse IP WAN sur deux sites différents (pas besoin de plus). Si un des deux sites est offline alors ça vérifie sur un autre pour toujours obtenir deux sources différentes. Comparaison des deux adresses IP obtenues et si ça concorde alors c'est comparé avec l'adresse qui est contenue dans ip.txt Si l'adresse IP est la même que celle dans le fichier ip.txt, le script s'arrête sans inscription de log ou d'envoi de mail. Si l'adresse IP WAN a changé alors c'est relaté dans le fichier log et envoyé par mail. J’ajoute à ça une activation et gestion entièrement gérée par DSM. C'est lui via le planificateur de tâche qui exécute le script en fonction de la configuration qu'on a indiqué. 1 Citer
PPJP Posté(e) le 26 juillet 2019 Posté(e) le 26 juillet 2019 il y a 13 minutes, Zeus a dit : Et bien déjà ça et c'est pas mal 🙂 Pourquoi? il y a 14 minutes, Zeus a dit : Vérification de l'adresse IP WAN sur deux sites différents (pas besoin de plus). Si un des deux sites est offline alors ça vérifie sur un autre pour toujours obtenir deux sources différentes. A l'origine tu avais demandé la confirmation sur 2 autres sites? A préciser: Si l'on a détecté un changement d'IP sur un premier site et impossibilité de confirmation sur d'autres (connexion coupée par ex) Si aucun site accessible? etc... il y a 19 minutes, Zeus a dit : J’ajoute à ça une activation et gestion entièrement gérée par DSM. C'est lui via le planificateur de tâche qui exécute le script en fonction de la configuration qu'on a indiqué. Avec pour conséquence qu'aucun script ne sera en fonction lors du changement d'IP! Avec quelle fréquence comptes-tu le lancer? Je vais modifier le scipt pour qu'il répone à tes besoins; 0 Citer
unPixel Posté(e) le 26 juillet 2019 Posté(e) le 26 juillet 2019 (modifié) Citation Pourquoi? Parce que je fonctionne comme ça avec mes scripts 🙂 Je préfère tout uniformisé dans la même interface. Synology fait de bonnes choses et ça à mes yeux en est une. Je trouve par ailleurs contrab indigeste. Citation A l'origine tu avais demandé la confirmation sur 2 autres sites? J'avais rien demandé au départ mais je me suis mêlé au jeu d'améliorer le script et c'était une idée oui car j'avais pensé à cette éventualité que le seul site sur lequel on se reposait pouvait à la fois être off ou même se tromper (peu probable quand même). Citation Si l'on a détecté un changement d'IP sur un premier site et impossibilité de confirmation sur d'autres (connexion coupée par ex) Si aucun site accessible? etc... Tu vas loin dans le scénario mais comme tout est possible alors je dirais le prochain test après remise en ligne d'internet fera le travail. Après tout, pas besoin de faire quoi que ce soit pendant ce scénario puisqu'il n'y a plus d'internet... Citation Avec pour conséquence qu'aucun script ne sera en fonction lors du changement d'IP! ??? Je n'ai pas compris. Citation Avec quelle fréquence comptes-tu le lancer? Je vais modifier le scipt pour qu'il répone à tes besoins; Merci c'est gentil mais ne te prend pas la tête si tu as autre chose à faire 🙂 Quant à la fréquence, je n'en ai personnellement pas. Pour mon cas personnel et ayant une IP fixe non garantie, je dirais un test toutes les 12h. Mais pour d'autres, ça pourrait être toutes les minutes. C'est pour ça aussi que ça me plait de régler cela dans le planificateur de tâche. Merci en tout cas 😉 Modifié le 26 juillet 2019 par Zeus 0 Citer
PPJP Posté(e) le 26 juillet 2019 Posté(e) le 26 juillet 2019 Chacun sa vision des choses. il y a 7 minutes, Zeus a dit : Pour mon cas personnel et ayant une IP fixe non garantie, je dirais un test toutes les 12h Donc potentiellement 12H sans correction de ton DNS!!! il y a 8 minutes, Zeus a dit : Mais pour d'autres, ça pourrait être toutes les minutes Inutile; il faut rester cohérent avec les ttl du DNS. La correction du script ne devrati pas présenter de grosses difficultés. Si l'on est optimiste disons demain (enfin aujourdhui) Bonne soirée. 0 Citer
unPixel Posté(e) le 26 juillet 2019 Posté(e) le 26 juillet 2019 Citation Donc potentiellement 12H sans correction de ton DNS!!! Oui, j'estime que je peux subir une panne de 12h en ce moment même. Mais encore une fois, ce n'est pas fixé. Je pourrais tout aussi bien décidé le lendemain de passer ce test à 1h. A la rentrée par exemple, ça sera différent. Je passerais certainement à beaucoup plus court. Citation Inutile; il faut rester cohérent avec les ttl du DNS. Chez certains provider, le changement est très rapide. Chez OVH par exemple, j'ai une option qui accélère la propagation 😉 Citation Si l'on est optimiste disons demain (enfin aujourdhui) Prend ton temps 😉 Bonne soirée également et merci. 0 Citer
PPJP Posté(e) le 26 juillet 2019 Posté(e) le 26 juillet 2019 (modifié) Voila qui devrait répondre à ton besoin, commenté (un peu) en plus! #!/bin/bash #shortsurvip.sh.sh v0.0.2 ##################### ### 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") # fichier de memo de l'IP MEMOIPFILE="/volume1/script/forum/survip/dsm/ip.txt" LOGFILE="/volume1/script/forum/survip/dsm/ip.log" # Fichier temporaire pour messagerie MSGFILE="/volume1/script/forum/survip/dsm/message.txt" ################# ### 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 # boucle sur les sites pour en trouver un retournant une IP valide until [[ $ip_lue_valide -eq 0 || $nbTest -eq $nbSites ]];do ip_lue=`curl -s -L ${SITES[($[($1 + $nbTest) % $nbSites])]}` if [[ $ip_lue =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then # test si reponse est une IP ip_lue_valide=0 else ((nbTest++)) sleep 1 #utile? fi # repositine pointeur sur le suivant du dernier consulté idSite=($[($1 + $nbTest) % $nbSites + 1]) done } 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 lire_ip_wan $idSite if [ $ip_lue_valide -eq 0 ]; then # si IP lue valide if [ "${old_ip}" != "${ip_lue}" ]; then # si IP changée new_ip=$ip_lue #IP à confirmer ip_lue_valide=1 bcl=0 # recherche autre site fournissant une IP valide until [[ $ip_lue_valide -eq 0 || $bcl -eq $nbSites ]];do ((bcl++)) lire_ip_wan $idSite done if [ "${ip_lue}" == "${new_ip}" ]; then # si nouvelle IP confirmée memoriser_IP sujet="Votre adresse IP publique (IPv4) a changé !" inscription_log envoi_mail fi fi fi exit 0 Modifié le 27 juillet 2019 par PPJP Ajout commentaires et modifs mineures 1 Citer
unPixel Posté(e) le 27 juillet 2019 Posté(e) le 27 juillet 2019 Et bien ça été rapide 🙂 Merci, je ferais quelques tests demain en ne mettant que trois url et en jouant sur des blocages de ces URL pour simuler des sites off. Je te tiens au courant demain en journée 🙂 Merci 0 Citer
unPixel Posté(e) le 27 juillet 2019 Posté(e) le 27 juillet 2019 Bonsoir, Je reviens vers toi @PPJP pour m'excuser mais je ne pourrais pousser mes tests ces prochaines heures. Je suis passé récemment en tout DNS over HTTPS sur mon réseau et j'ai forcément Pi-Hole qui fait des siennes. Il faut que je règle ce petit soucis avant de pouvoir lancer des blocages d'url et voir comment ça passe. Merci pour ta compréhension 😉 0 Citer
PPJP Posté(e) le 28 juillet 2019 Posté(e) le 28 juillet 2019 Bonsoir Zeus, Il n'y a besoin d'excuses!!! Tu es le seul intéressé par ce script, donc nous y reviendrons quand tu le souhaiteras. Avec un MP si le script ne réponds pas au besoin et que je ne me manifeste pas rapidement. Creuses bien Pi-Hole, comme cela quand je m'y intéresserai, il y aura un expert pour me conseiller. Bon courage. 0 Citer
PPJP Posté(e) le 13 août 2019 Posté(e) le 13 août 2019 (modifié) bonjour @Zeus ! je te souhaite de très bonnes vacances!!! Profites en bien. Modifié le 13 août 2019 par PPJP 0 Citer
Jojo (BE) Posté(e) lundi à 13:48 Posté(e) lundi à 13:48 Le 28/07/2019 à 2:44 AM, PPJP a dit : Tu es le seul intéressé par ce script, donc nous y reviendrons quand tu le souhaiteras. faut 😄, je suis également intéressé au superlatif, c'ailleurs merci qu passage à tous les 2/3 pour vos contributions et partages 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.