Aller au contenu

PPJP

Membres
  • Compteur de contenus

    393
  • Inscription

  • Dernière visite

  • Jours gagnés

    5

Tout ce qui a été posté par PPJP

  1. Bonjour J'ai eu l'opportunité de me dégager un petit créneau pour traiter votre demande. Je joins les trois fichiers constituant ma proposition. Quelques info concernant leur utilisation: S'agissant de scripts en python3 ce paquet doit être installé (disponible dans le centre de paquets) Le fichier rptrsurv.py sera copié dans un dossier à votre convenance (attention à garder les retours de ligne au format Linux). Il peut être renommé si besoin, en gardant l'extension .py Les fichier mel.py et mel.cfg, s'il peuvent être copiés dans le même dossier durant un courte période de test, devraient être déplacés dans un dossier moins facilement accessible car le fichier mel.cfg contiendra vos identifiants et mots de passe de messageries. Vous pouvez, par exemple, créer le dossier /scripts/mel/ accessible que par vous. Il vous faudra faire les paramétrages suivants: Fichier rptrsurv.py Les paramètres ont été regroupés en début de fichier Si les fichiers mel.py et mel.cfg ne sont pas dans le même dossier que rptrsurv.py: Activation de la ligne 7 (suppression de # au début) et indication du dossier contenant les fichiers mel.py et mel.cfg Renseignemant des valeurs de: DOSSSURV : la liste des dossiers à surveiller SUJET : Le sujet devant apparaître sur le mail INTRO : Le texte de début du Mail (avant le détail des évolutions de fichiers) FINAL : Le texte de fin du Mail après le détail des évolutions de fichiers) EXPEDITEUR : ce qui apparaîtra comme expéditeur sur le Mail DESTINATAIRES : la liste des destinataires du mail Fichier mel.cfg Renseignement des paramètres des serveur SMTP que vous comptez utiliser. Comme vous ne m'avez pas indiquer la (les) messagerie(s) que vous utiliserez, je vous ai mis 3 exemples Si vous n'utilisez qu'un seul SMTP (ce sera le compte 1 car utilisé par défaut) les autres peuvent être effacés Fichier mel.py Ce module de classe comprend une partie autotest (envoi d'un mail de test) permettant de tester son fonctionnement. Si vous voulez utiliser cet auto test la ligne 181 (destinataire du message de test) devra être renseignée Utilisation de ces fichiers : Lancement en SSH (en root) : python3 /chemin_du_dossier/rptrsurv.py Par le planificateur de tâches (en root) : /usr/local/bin/python3 /chemin_du_dossier/rptrsurv.py ou pour avoir un fichier de log : /usr/local/bin/python3 /chemin_du_dossier/rptrsurv.py > chemin_du_dossier/fichier_de_log.log 2>&1 Bon courage. rptrsurv.py mel.py mel.cfg
  2. Bonsoir, Votre demande ayant évolué (surveillance de plusieurs dossiers et présentation des évolutions de fichiers) quelques adaptations supplémentaires des scripts sont nécessaires Je suis malheureusement actuellement très chargé et n'ai pas de disponibilités pour m'y consacrer. Cela devrait se résorber sous environ 10 jours. En espérant que vous pourrez patienter jusque là. Désolé. PS Pourriez -vous m'indiquer le final de l'adresse (partie après @) que vous prévoyez d'utiliser pour l'envoi du mail?
  3. Le lot??? Et en faisant comme ceci: Ouvrir Notepad++ Vérifier sous Paramétrage/Préférence avoir Sur Nas-Forum Clic sur la PJ et choisir ouvrir avec NotePad++ Par acquis de conscience revérifier dans NotePad++ avec Edition/Convertir les sauts de ligne sont bien au format Unix Enregistrer le fichier dans le NAS
  4. bonjour @Zeus ! je te souhaite de très bonnes vacances!!! Profites en bien.
  5. Bonjour @GKSC, Je découvre ce post et constate que vous n'avez reçu aucune réponse. Avez-vous résolu votre problème seul? Sinon je dois pouvoir vous fournir assez rapidement quelques fichiers de script répondant à votre besoin. Ce seraient des extraits de certains scripts qui tournent régulièrement chez moi. Il me suffirait de les adapter à ce nouveau besoin. Cependant il s'agit de scripts python3, il vous faudrait installer ce paquet. Je vous préciserai également les modifications vous restant à faire pour rendre le tout fonctionnel. Merci de me faire savoir si vous êtes intéressé.
  6. PPJP

    Bonsoir

    Bonsoir Taolinou, Soyez la bienvenue sur ce forum. Ce que vous envisagez est réalisable sur un NAS. Cependant, déjà, quelques conseils; Pour éviter des déconvenues telles celles que vous avez rencontrées, il serait bien de prévoir une sauvegarde régulière de votre NAS. (sur un HDD externe par exemple) De même, surtout si vous prévoyez une configuration en SHR ou Raid, un UPS est conseillé.
  7. J'ai l'impression qu'il s'agit de 2 groupes de stockage en Raid1. Configuration peu commune!
  8. 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.
  9. 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
  10. Chacun sa vision des choses. Donc potentiellement 12H sans correction de ton DNS!!! 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.
  11. Pourquoi? 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... 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;
  12. Bonsoir, 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! 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. Quelle adresse? 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)
  13. Des scripts, j'en ai quelques un oui qui tournent. Je voulais dire plusieurs instance de ce script. C'est la principe d"un script de surveillance de tourner en tâche de fond, non? Ou plus simplement supprime la, ainsi que le else qui précède.
  14. SI!!! Oubli regretable! 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. Tu peux la supprimer de la liste sans pb, mais laisser un espace entre chaque adresse. 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 La suppression d'une tâche n’arrête pas le ou les script lancés. 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?
  15. OK. Tiens moi informé du résultat SVP
  16. Le fichier mémorisant l'IP était absent ou vide Il n'est pas prévu d'envoyer un mail en cas d'erreur. 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. 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
  17. 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.
  18. 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?
  19. 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. 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.
  20. 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
  21. 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!
  22. 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.
  23. 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).
  24. 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
  25. Attention mon précédent message a été édité!
×
×
  • 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.