pierre68314 Posté(e) le 8 août 2012 Partager Posté(e) le 8 août 2012 Bonjour, Mon ip publique change toutes les 24h. Ne voulant pas payer un service comme DynDNS, je souhaite faire la chose suivante: 1- le syno récupère l'adresse publique en interrogeant un site comme http://monip.org et me l'envoyer par mail. 2- dans un second temps, je souhaite stocker l'ip et interroger régulièrement monip.org pour savoir si elle a changé et seulement dans ce cas-là envoyer un mail avec la nouvelle adresse. J'ai écrit un script qui génère une copie du site monip.org et qui me l'envoie en pièce jointe. Manuellement, j'arrive a exécuter le script et tout se passe bien. sh /volume1/bootstrap/script2.sh Ce qui cloche c'est lorsque je veux le lancer automatiquement dans crontab. J'ai rajouté la dernière ligne: #minute houur mday month wday who command 0 0 * * * root /usr/sbin/ntpdate -b time.nist.gov 38 9 * * 3,6 root /usr/syno/bin/synopkg chkupgradepkg 0 1 * * 1,2,3,4,5 root /sbin/poweroff 0-59/1 * * * * root bin/sh /volume1/bootstrap/script2.sh >> /volume1/bootstrap/log.txt ~ Au final, un fichier log vide se crée dans le répertoire désiré mais rien de plus, je ne reçois aucun mail. Voilà les infos complémentaires: le script: #!/bin/sh wget -O /volume1/bootstrap/adresse.html http://monip.org echo "Contenu du mail" | /opt/bin/nail -s "Adresse Syno" -a /volume1/bootstrap/adresse.html XXXXXXX@free.fr rm /volume1/bootstrap/adresse.html exit; J'ai installé nail pour l'envoi de mail J'ai installé crontab pour créer un nouveau crontab J'ai aussi essayé chmod +x /volume1/bootstrap/script2.sh pour donner les droits d'accès Sauriez-vous me dire ce qui ne va pas? Mercii 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lurik Posté(e) le 8 août 2012 Partager Posté(e) le 8 août 2012 pour ce qui ne va pas : je n'ai pas trouvé au premier coup d'oeil. Mais : Ne voulant pas payer un service comme DynDNS moi non plus je ne veux pas payer, mais le service est gratuit. donc je ne comprend pas pas bien l’intérêt d'éviter un service gratuit pour ne pas payer 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
pierre68314 Posté(e) le 8 août 2012 Auteur Partager Posté(e) le 8 août 2012 (modifié) Ca flood, même ici! Merci de vérifier un minimum comme par exemple en allant sur le site. http://dyn.com/dns/ --- 20 à 30$ par an pour un compte standard ... J'ai modifié mon script pour ne pas avoir à envoyer une pièce jointe : #!/bin/sh IP="`curl -s http://checkip.dyndns.org/ | grep -o '[[:digit:].]\+'`" echo "Contenu du mail : $IP" | /opt/bin/nail -s "Adresse Syno" xxxxx@free.fr exit; Le script ne se lance toujours pas. Modifié le 8 août 2012 par pierre68314 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sp@r0 Posté(e) le 9 août 2012 Partager Posté(e) le 9 août 2012 Toi aussi tu peux v 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
pierre68314 Posté(e) le 9 août 2012 Auteur Partager Posté(e) le 9 août 2012 (modifié) Toi aussi tu peux vérifier un minimum .... Dyndns est toujours gratuit si : - tu as un ancien compte - si tu t'inscrit aujourd'hui à la période de test gratuite et que tu passe ensuite à l'offre gratuite mais cela nécessite une CB sinon synology édite un service de dns dynamique gratuit pour tt les processeur de syno Merci de l'intérêt que tu me portes. J'ai vérifié plus qu'un minimum... Jusqu'à ce jour je n'avais pas besoin de dyndns vu que j'avais une ip fixe donc je n'ai pas d'ancien compte. La période d'essai gratuite, est comme son nom l'indique "une période de test" de 30 jours au bout de laquelle $20 sont directement prélevés sur ta carte. Par contre, pour ce qui est du 2e point, tu as entièrement raison, le service s'appelle EZ truc il me semble et ça fonctionne effectivement. (un point pour toi) Mais maintenant je reste sur ma faim étant donné que mon code est à 2 doigts de fonctionner. C'est rageant de se dire qu'on peut le faire et que l'on n'y arrive pas. Donc si quelqu'un a envie de résoudre mon problème de code il est le bienvenu. Modifié le 9 août 2012 par pierre68314 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
PatrickH Posté(e) le 9 août 2012 Partager Posté(e) le 9 août 2012 Une question : pourquoi passe tu par un mail pour récupérer ton adresse IP ?? Tu en fais quoi de ton mail ensuite ?? Patrick 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sp@r0 Posté(e) le 9 août 2012 Partager Posté(e) le 9 août 2012 Toute l'astuce de la man 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 9 août 2012 Partager Posté(e) le 9 août 2012 Pour ton script : Dans ton cron, je voit un "bin/sh" tente déjà avec un "/bin/sh" plutot. Tu devrais pouvoir le lancer sans çà d'ailleurs, juste le "/volume1/xxx/script.sh" Ensuite, dans ton script, met les chemins absolus des executables pour wget et rm (fait un "which PROG" pour avoir le chemin absolu) Enfin, comme dit plus haut, synology propose un service de DDNS totalement gratuit 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
pierre68314 Posté(e) le 9 août 2012 Auteur Partager Posté(e) le 9 août 2012 Merci pour vos réponses. @Patrick : je reçois mon ip publique sur mon mail que je consulte de partout. Du coup, de mon travail, je connais l'ip et je peux me connecter au NAS de l'extérieur. @Bud77 : je vais essayer en mettant un "/" avant. Pour info, j'ai lu ailleurs que je ne mettais peut-être pas le bon chemin vers le shell. Du coup, j'ai utilisé la commande "which" qui m'a indiqué qu'en fait je devais mettre /opt/bin/sh En changeant cela dans mon script, je peux maintenant le lancer sans mettre "sh" devant. J'ai lu aussi qu'il fallait placer le script directement "/opt/bin". A mon avis, ça ne doit pas être ça mais je vais tout de même essayer ce soir. @Bud77 (bis) : je vais passer par la solution proposée par Synology qui est plus souple qu'un envoi de mail. Mais j'aimerai comprendre pourquoi ça ne fontionne pas. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 9 août 2012 Partager Posté(e) le 9 août 2012 Sur syno, tu peux mettre le script ou tu veux, l'essentiel est de bien préciser le chemin complet pour le lancer Par contre, je note un "/opt" et là, çà risque de coincer ... Opt est le répertoire d'IPKG, et je te déconseille d'y faire appel lors d'un boot par exemple. Tu devrais peut être mettre le shell en /bin/ash (qui existe de base sur le syno, mais /bin/sh devrait aussi exister) Si j'ai bien compris, si tu le lances directement avec un "./programme.sh" çà tourne ? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
pierre68314 Posté(e) le 9 août 2012 Auteur Partager Posté(e) le 9 août 2012 @Budd77 je tape: /volume1/bootstrap/script2.sh et ça se lance sans mettre de " . " avant le premier slash 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 9 août 2012 Partager Posté(e) le 9 août 2012 Oui, çà reviens au fait de faire un "cd /volume1/bootstrap" puis "./script2.sh" Donc il devrait tourner dans ton cron si tu as bien précisé tout les chemins absolus 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
cricx Posté(e) le 9 août 2012 Partager Posté(e) le 9 août 2012 Merci pour vos réponses. @Patrick : je reçois mon ip publique sur mon mail que je consulte de partout. Du coup, de mon travail, je connais l'ip et je peux me connecter au NAS de l'extérieur. oui, c'est effectivement une solution. Il y a aussi celle d'&voir un domaine, de le gérer sur le syno en automatisant la mise à jour de la zone avec l'adresse IP @Bud77 : je vais essayer en mettant un "/" avant. Pour info, j'ai lu ailleurs que je ne mettais peut-être pas le bon chemin vers le shell. Du coup, j'ai utilisé la commande "which" qui m'a indiqué qu'en fait je devais mettre /opt/bin/sh En changeant cela dans mon script, je peux maintenant le lancer sans mettre "sh" devant. Pour lancer un script, il y a deux solutions : - invoquer l’interpréteur de commandes (le shell) en lui fournissant en paramètre le nom du script à lancer - lancer directement le script, à la condition que celui ci contienne un shebang (chemin de l'interpréteur en ligne 1 précédé de #!) et que le fichier soit exécutable. Dans les deux cas, il faut le chemin du shell (/bin/ash sur syno) J'ai lu aussi qu'il fallait placer le script directement "/opt/bin". A mon avis, ça ne doit pas être ça mais je vais tout de même essayer ce soir. Non. Le script peut être n'importe où. Mais il faut dans ce cas le lancer avec son chemin complet. Si le script est placé dans un répertoire inclus dans le path, il peut être lancé simplement par son nom. Mais en général dans une tâche cron on met toujours le chemin complet car le path n'est en général pas défini pour les tâches cron. @Bud77 (bis) : je vais passer par la solution proposée par Synology qui est plus souple qu'un envoi de mail. Mais j'aimerai comprendre pourquoi ça ne fontionne pas. heureusement que ça ne fonctionne pas, tu te vois recevoir un mail toutes les minutes ? il ne faudrait envoyer un mail que si l'adresse a changé (il suffit d'enregistrer l'adresse, puis de comparer la nouvelle avec celle enregistrée) 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
pierre68314 Posté(e) le 9 août 2012 Auteur Partager Posté(e) le 9 août 2012 2- dans un second temps, je souhaite stocker l'ip et interroger régulièrement monip.org pour savoir si elle a changé et seulement dans ce cas-là envoyer un mail avec la nouvelle adresse. Hello Cricx, Effectivement c'est ce que j'avais dans l'idée de faire dans un second temps. L'envoi toutes les minutes c'est juste pour les tests. Pour en revenir à mon problème, penses-tu que je devrais remplacer dans mon script le shebang par /bin/ash Je l'ai changé et je peux lancer mon script en tappant : /volume1/bootstrap/script3.sh mais toujours rien avec CRONTAB 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 9 août 2012 Partager Posté(e) le 9 août 2012 (modifié) Dans ton script, tu as bien remplacé : wget par /usr/syno/bin/wget rm par /bin/rm echo par /bin/echo Modifié le 9 août 2012 par bud77 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lurik Posté(e) le 9 août 2012 Partager Posté(e) le 9 août 2012 Pour les problème de crontab, il n'y a pas une histoire de tabulation/espace à respecter dans le fichier? Si je ne me trompe pas, c'est des tabulation obligatoirement. Tes différents champs sont bien séparés par des tabulations? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
PatrickH Posté(e) le 10 août 2012 Partager Posté(e) le 10 août 2012 .... Si je ne me trompe pas, c'est des tabulation obligatoirement. .... Exact ! Patrick 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
cricx Posté(e) le 10 août 2012 Partager Posté(e) le 10 août 2012 Effectivement c'est ce que j'avais dans l'idée de faire dans un second temps. L'envoi toutes les minutes c'est juste pour les tests. pour l'envoi toutes les minutes, ça marchera mieux avec * * * * * root /volume1/bootstrap/script2.sh >> /volume1/bootstrap/log.txt n'oublie pas de rendre exécutable le script (chmod +x /volume1/bootstrap/script2.sh) Pour en revenir à mon problème, penses-tu que je devrais remplacer dans mon script le shebang par /bin/ash Je l'ai changé et je peux lancer mon script en tappant : /volume1/bootstrap/script3.sh mais toujours rien avec CRONTAB avec #!/bin/sh ça fonctionne sur un syno. et si ça marche en lancement direct, ça doit marcher dans la crontab, à la condition que toutes les commandes soient données avec leur chemin absolu. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
PatrickH Posté(e) le 10 août 2012 Partager Posté(e) le 10 août 2012 As tu bien arrêté et relancé le daemon "cron" après avoir modifié le contenu de ton fichier crontab ? Patrick 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
pierre68314 Posté(e) le 10 août 2012 Auteur Partager Posté(e) le 10 août 2012 (modifié) avec #!/bin/sh ça fonctionne sur un syno. et si ça marche en lancement direct, ça doit marcher dans la crontab, à la condition que toutes les commandes soient données avec leur chemin absolu. Dans ton script, tu as bien remplacé : wget par /usr/syno/bin/wget rm par /bin/rm echo par /bin/echo Ah ben ça doit être ça alors, ça doit venir du fait que je n'ai pas mis les chemins absolus DANS le script. Donc si je te suis ça doit sonner : #!/bin/sh IP="`curl -s http://checkip.dyndns.org/ | grep -o '[[:digit:].]\+'`" /bin/echo "Contenu du mail : $IP" | /opt/bin/nail -s "Adresse Syno" xxxxx@free.fr exit; Est-ce que je dois mettre quelque chose en chemin absolu aussi pour: IP="`curl -s http://checkip.dyndns.org/ | grep -o '[[:digit:].]+'`" ? genre /opt/bin/curl ou quelquechose pour "grep"? Pour en revenir à CRONTAB, ça fonctionne chez moi sans espace puisque le fichier CRONTAB de base n'en contenait pas et que mon syno s'allume et s'éteint bien tout seul. Maiis ayant également lu ça, j'avais déjà remplacé les espaces par des tabulations. Modifié le 10 août 2012 par pierre68314 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 10 août 2012 Partager Posté(e) le 10 août 2012 Dans ton nouveau script, il faut aussi mettre le chemin du curl et grep, car elles sont aussi exécutées sur le syno 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
pierre68314 Posté(e) le 10 août 2012 Auteur Partager Posté(e) le 10 août 2012 je désespère, ça ne marche toujours pas même en mettant les chemins complets : #!/bin/ash IP="`/usr/syno/bin/curl -s http://checkip.dyndns.org/ | /bin/grep -o '[[:digit:].]\+'`" /bin/echo "Contenu du mail : $IP" | /opt/bin/nail -s "Adresse Syno"xxxxxx@free.fr 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 10 août 2012 Partager Posté(e) le 10 août 2012 Tu l'as bien rendu exécutable ? (chmod +x) 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
pierre68314 Posté(e) le 10 août 2012 Auteur Partager Posté(e) le 10 août 2012 (modifié) Tu l'as bien rendu exécutable ? (chmod +x) oui j'ai fais ça et chmod 777 sans succès. par contre j'avance un peu maintenant. J'essai de passer la commande dans le CRONTAB sans utiliser par l'appel d'un script. ça me donne : */3 * * * * root /bin/echo "Contenu du mail : `/usr/syno/bin/curl -s http://checkip.dyndns.org/ | /bin/grep -o '[[:digit:].]\+'`" | /opt/bin/nail -s "Adresse Syno" xxxx@free.fr Je reçois le mail mais sans contenu. Modifié le 10 août 2012 par pierre68314 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
pierre68314 Posté(e) le 13 août 2012 Auteur Partager Posté(e) le 13 août 2012 petit Up pour mon sujet 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
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.