Forum Programmation.shell Besoin d'aide pour terminer mon petit script...

Posté par  .
Étiquettes : aucune
0
24
mai
2007
Bonjour à tous,

Voici un petit script qui me permet de pinguer une machine. Quand celle-ci ne répond plus, je me fais envoyer un mail. De plus, je crée un fichier pour ne pas recevoir un mail toute les minutes. Ca, ça fonctionne au poil. Mon problème est que quand la machine répond à nouveau, je n'ai pas d'info. Je suis obligé d'effacer à la mano mon fichier de test.
Je cherche donc à compléter mon script pour que dès que la machine répond à nouveau je reçoive un mail m'indiquant le changement d'état et que le fichier test soit effacé.

Merci pour votre aide.

Voilà mon script:

#!/bin/bash
#
# Fichier pour éviter les répétitions.
TOUCH=/tmp/test

# déclaration IP
HOSTS="192.168.0.10"

# nombre de ping.
COUNT="3"

# paramètres email.
SUBJECT="10 est en vrac!"
EMAILID="mon_mail"

for myHost in $HOSTS
do
count=$(ping -c $COUNT $myHost | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }')
if [ ! -f $TOUCH ]; then
if [ $count -eq 0 ]; then
echo "10 ne répond plus au ping depuis $(date)" | mail -s "$SUBJECT" $EMAILID
touch $TOUCH
fi
fi
done
  • # Inversion de tests

    Posté par  . Évalué à 2.

    Tu peux simplement inverser les tests et rajouter le else qui va bien :


    if [ $count -eq 0 ]; then
    if [ ! -f $TOUCH ]; then
    echo "10 ne répond plus au ping depuis $(date)" | mail -s "$SUBJECT" $EMAILID
    touch $TOUCH
    fi
    else
    rm $TOUCH 2>/dev/null
    fi



    Sinon, un truc, mets plutôt TOUCH=/var/lock/Ping_host ca sera plus parlant et evitera de supprimer ton fichier test par erreur ;)
    • [^] # Re: Inversion de tests

      Posté par  . Évalué à 3.

      hum j'ai encore pas lu jusqu'au bout ^_^

      Ca donnerait plutot :

      if [ $count -eq 0 ]; then
      if [ ! -f $TOUCH ]; then
      echo "10 ne répond plus au ping depuis $(date)" | mail -s "$SUBJECT" $EMAILID
      touch $TOUCH
      fi
      else
      if [ -f $TOUCH ]; then
      rm $TOUCH 2>/dev/null
      echo "10 répond à nouveau au ping : $(date)" | mail -s "$SUBJECT"
      fi
      fi
      • [^] # Re: Inversion de tests

        Posté par  . Évalué à 1.

        Merci Mouquiette pour votre aide. Le script fonctionne au poil.

        Cordialement.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.