sakisay Posté(e) le 10 septembre 2014 Partager Posté(e) le 10 septembre 2014 Bonjour, Je souhaiterais executer un petit script qui m'indiquerait lorsque mon syno ne ping plus internet. Est-ce que quelqu'un aurait une idée svp ? Merci d'avance 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
glouglou44 Posté(e) le 11 septembre 2014 Partager Posté(e) le 11 septembre 2014 Un petit peu de bash couplé à un crontab devrait faire l'affaire. 1 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 11 septembre 2014 Partager Posté(e) le 11 septembre 2014 (modifié) #!/bin/ash PATH=/bin:/usr/bin site=${1:-www.free.fr} if ping -c 2 -w 5 $site >/dev/null 2>&1 ; then echo "OK" >&2 exit 0 else echo "KO" >&2 exit 1 fi la valeur "5" (-w 5) est le nombre de secondes au bout duquel ping retourne en erreur en cas de non réponse. "www.free.fr" est le site qui sera testé mais tu peux choisir autre chose (vérifier que le site en question répond au ping en temps normal). (son nom peut être aussi passé en paramètre à l'appel) le script (on va supposer qu'il a été nommé "check_comm.sh" et qu'il est accessible directement dans le PATH) peut être invoqué par un autre script comme suit: if check_comm.sh ; then .... else ... fi Et juste une question par curiosité: ton objectif est de faire quoi quand la connexion est "down". Modifié le 11 septembre 2014 par CoolRaoul 1 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sp@r0 Posté(e) le 11 septembre 2014 Partager Posté(e) le 11 septembre 2014 Ce qui serait sympa c'est que cela t'envoie un mail pour te dire que tu es déconnecté 1 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 11 septembre 2014 Partager Posté(e) le 11 septembre 2014 Ce qui serait sympa c'est que cela t'envoie un mail pour te dire que tu es déconnecté 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
sakisay Posté(e) le 11 septembre 2014 Auteur Partager Posté(e) le 11 septembre 2014 #!/bin/ash PATH=/bin:/usr/bin site=${1:-www.free.fr} if ping -c 2 -w 5 $site >/dev/null 2>&1 ; then echo "OK" >&2 exit 0 else echo "KO" >&2 exit 1 fi la valeur "5" (-w 5) est le nombre de secondes au bout duquel ping retourne en erreur en cas de non réponse. "www.free.fr" est le site qui sera testé mais tu peux choisir autre chose (vérifier que le site en question répond au ping en temps normal). (son nom peut être aussi passé en paramètre à l'appel) le script (on va supposer qu'il a été nommé "check_comm.sh" et qu'il est accessible directement dans le PATH) peut être invoqué par un autre script comme suit: if check_comm.sh ; then .... else ... fi Et juste une question par curiosité: ton objectif est de faire quoi quand la connexion est "down". Bonjour et merci pour vos réponses. Je souhaite avoir un historique de mes déconnexions 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Riingo Posté(e) le 12 septembre 2014 Partager Posté(e) le 12 septembre 2014 Bonjour, Je squat un peu en tournant autrement la question de Sakisay , Est-il possible d'écrire dans les journaux d’événement ? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
gaetan.cambier Posté(e) le 12 septembre 2014 Partager Posté(e) le 12 septembre 2014 Heu dans /var/log/message ça devrait être possible 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 12 septembre 2014 Partager Posté(e) le 12 septembre 2014 (modifié) Heu dans /var/log/message ça devrait être possible /var/log/messages, avec la commande "logger" exemple: fserv> logger -p user.warn -t check_comm "perdu connexion internet" # et donc: fserv> tail -1 /var/log/messages Sep 12 12:04:02 fserv check_comm: perdu connexion internet Modifié le 12 septembre 2014 par CoolRaoul 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fravadona Posté(e) le 12 septembre 2014 Partager Posté(e) le 12 septembre 2014 /var/log/messages, avec la commande "logger" CoolRaoul m'apprend toujours des petites astuces 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
sakisay Posté(e) le 15 septembre 2014 Auteur Partager Posté(e) le 15 septembre 2014 (modifié) Bonjour, Tout d'abord merci beaucoup pour votre aide. Désolé, j'aurais du préciser ma question dès le départ : Supernas = le nom que j'ai donné à mon synology Ce qu'il me faudrait, ce serait un rapport des déconnexions dans un fichier texte sur mon supernas Par exemple dans supernasrapport.txt Avec si possible le moment ou il y a eu la déconnexion. AAAA/MM/JJ/HH/Minute/seconde Je précise "uniquement des déconnexions" sinon le rapport.txt va peser des tonnes au bout de quelques temps. Merci beaucoup pour votre aide précieuse Modifié le 15 septembre 2014 par sakisay 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
gaetan.cambier Posté(e) le 15 septembre 2014 Partager Posté(e) le 15 septembre 2014 Vaudrait mieux logger chaque fous qu'il y a un changement d'etat autrement, tu ne saura pas si la deconnection a durée 1minute ou 1 heure 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
sakisay Posté(e) le 15 septembre 2014 Auteur Partager Posté(e) le 15 septembre 2014 (modifié) Comme vous le sentez, les pros du code, c'est vous Tout ce que je veux c'est que mon syno lance un script qui tournera h24 et qui m'indiquera avec exactitude le moment de mes déconnexions Merci Modifié le 15 septembre 2014 par sakisay 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 15 septembre 2014 Partager Posté(e) le 15 septembre 2014 (modifié) Un truc de ce genre devrait le faire (écrit à l'arrache, donc pas forcément "bug free") #!/bin/ash PATH=/bin:/usr/bin site=${1:-www.free.fr} check () { if ping -c 2 -w 5 $site >/dev/null 2>&1 ; then echo "on" else echo "off" fi } LOGFILE=/var/tmp/conn_log.txt # a customiser prev_state="init" interval=60 # en secondes, pas trop faible et inferieur au delai du ping en tout cas while true ; do new_state=$(check) if [ "$new_state" != "$prev_state" ] ; then echo "$(date +%Y/%m/%d/%H:%M:%S): state $prev_state -> $new_state" >> $LOGFILE fi prev_state=$new_state sleep $interval done A lancer en process détaché, par exemple en "nohup" , via le gestionnaire de tache en mode désactivé, lancé au coup par coup avec le bouton exécuter, ou au boot du nas (dans /usr/local/etc/rc.d, chercher dans le forum pour les règles a respecter, on ne va pas entièrement macher le travail non plus ) **edit** NB: j'ai respecté la spec de mettre les secondes dans le log ("%S") mais c'est un peu inutile vu qu'on n'a pas une telle granularité. Modifié le 15 septembre 2014 par CoolRaoul 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Einsteinium Posté(e) le 15 septembre 2014 Partager Posté(e) le 15 septembre 2014 Pour ma part, avec syslog je récupère directement le log de mon routeur, ensuite cela me déclenche la notification par mail pour m'indiquer une reconnection, par contre si tu veux des alertes, il faut faire en sorte qu'elle se fasse à la récupération de la connection, sinon elle ne partiront jamais ;-) Maintenant cela n'est pas très représentatif dans le cas présent, l'on Ping un site, qui peu avoir des Time out et donc te faire croire à une coupure... 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 15 septembre 2014 Partager Posté(e) le 15 septembre 2014 Maintenant cela n'est pas très représentatif dans le cas présent, l'on Ping un site, qui peu avoir des Time out et donc te faire croire à une coupure... Faut choisir un site réputé fiable (je reconnais peut être que "free.fr" n'est pas un bon choix ), de plus et j'ai mis deux paquets (-c2) avec un timeout de 5 secondes (-w5): ca devrait aller Et puis s'agit pas non plus de contrôler une centrale nucléaire non plus hein 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Einsteinium Posté(e) le 15 septembre 2014 Partager Posté(e) le 15 septembre 2014 Aucun n'est vraiment fiable malheureusement, par contre il y a des sites qui font de l'audit via différents nœuds. Je trouve quand plus simple le passage par les logs du routeur, mais le script reste une bonne alternative si l'on n'y a pas accès, mais dans le cas présent une déconnection dure en générale que quelques secondes, je pense que tu devrais donc virer la répétition de la boucle toutes les 60 secondes, si j'avais du le faire, j'aurais fait une boucle infinie ;-) 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 15 septembre 2014 Partager Posté(e) le 15 septembre 2014 (modifié) Je trouve quand plus simple le passage par les logs du routeur, Pas sur, si on s’adresse à un newbie (qui de plus n'a probablement qu'une box et pas un routeur, plus "ouvert" par définition) Modifié le 15 septembre 2014 par CoolRaoul 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
sakisay Posté(e) le 15 septembre 2014 Auteur Partager Posté(e) le 15 septembre 2014 Un truc de ce genre devrait le faire (écrit à l'arrache, donc pas forcément "bug free") #!/bin/ash PATH=/bin:/usr/bin site=${1:-www.free.fr} check () { if ping -c 2 -w 5 $site >/dev/null 2>&1 ; then echo "on" else echo "off" fi } LOGFILE=/var/tmp/conn_log.txt # a customiser prev_state="init" interval=60 # en secondes, pas trop faible et inferieur au delai du ping en tout cas while true ; do new_state=$(check) if [ "$new_state" != "$prev_state" ] ; then echo "$(date +%Y/%m/%d/%H:%M:%S): state $prev_state -> $new_state" >> $LOGFILE fi prev_state=$new_state sleep $interval done A lancer en process détaché, par exemple en "nohup" , via le gestionnaire de tache en mode désactivé, lancé au coup par coup avec le bouton exécuter, ou au boot du nas (dans /usr/local/etc/rc.d, chercher dans le forum pour les règles a respecter, on ne va pas entièrement macher le travail non plus ) **edit** NB: j'ai respecté la spec de mettre les secondes dans le log ("%S") mais c'est un peu inutile vu qu'on n'a pas une telle granularité. Bonjour, J'ai créé un user "expandrive" avec des droits R+W sur tous les dossiers du syno. Ensuite, je m'y suis connecté en sshfs. Le problème c'est que je ne vois pas /usr/local/etc/rc.d ça s'arrête à Z:homesexpandrive J'aurais besoin de quelques précisions supplémentaires svp ps : Z = supernas pss : Je n'ai pas de routeurs. Merci 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
gaetan.cambier Posté(e) le 15 septembre 2014 Partager Posté(e) le 15 septembre 2014 avec le user root et le password de l'admin, ca ira mieux 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 15 septembre 2014 Partager Posté(e) le 15 septembre 2014 avec le user root et le password de l'admin, ca ira mieux Merci de prendre le relais! 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
sakisay Posté(e) le 15 septembre 2014 Auteur Partager Posté(e) le 15 septembre 2014 (modifié) J'ai réussis à m'y connecter en tant que root (avec putty). Je dois m'absenter. Je chercherais ce soir comment ouvrir le bash depuis putty. Modifié le 16 septembre 2014 par sakisay 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
sakisay Posté(e) le 16 septembre 2014 Auteur Partager Posté(e) le 16 septembre 2014 Bonjour, Le script fonctionne. Par contre si je redémarre mon Syno, il se lance mais j'ai l'impression qu'il se coupe peu de temps après. C'est à dire qu'on voit init off Et après plus rien alors que l'internet fonctionne. Avez-vous une idée du pourquoi il ne se relance pas correctement svp ? Il faudrait peut-être mettre un sleep avant qu'il se lance ? Ps : le sleep est modifié. ==> 5secondes. Merci 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 17 septembre 2014 Partager Posté(e) le 17 septembre 2014 le sleep est modifié. ==> 5secondes. A quoi bon avoir ajouté le commentaire: "en secondes, pas trop faible et inferieur au delai du ping en tout cas " si c'est pour qu'il n'en soit pas tenu compte PS: quelle peut-être la raison nécessitant la surveillance de sa connexion internet avec une granularité de 5 secondes? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
sakisay Posté(e) le 21 septembre 2014 Auteur Partager Posté(e) le 21 septembre 2014 (modifié) Parce que 60 secondes n'est pas assez précis Au final, je le mets à "15" Modifié le 21 septembre 2014 par sakisay 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.