Aller au contenu

Script Sur Un Synology Qui V


sakisay

Messages recommandés

#!/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é par CoolRaoul
Lien vers le commentaire
Partager sur d’autres sites

#!/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

Lien vers le commentaire
Partager sur d’autres sites

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é par CoolRaoul
Lien vers le commentaire
Partager sur d’autres sites

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é par sakisay
Lien vers le commentaire
Partager sur d’autres sites

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é par CoolRaoul
Lien vers le commentaire
Partager sur d’autres sites

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...

Lien vers le commentaire
Partager sur d’autres sites

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 -_-

Lien vers le commentaire
Partager sur d’autres sites

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 ;-)

Lien vers le commentaire
Partager sur d’autres sites

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 ^_^

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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?

Lien vers le commentaire
Partager sur d’autres sites

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.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • 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.