Surveiller un script

Résolu
yann747 Messages postés 128 Statut Membre -  
yann747 Messages postés 128 Statut Membre -
Bonjour,
je cherche un moyen de "surveiller" un script :
Si jamais il plante je voudrais être alerté par mail.
Quelles solutions sont envisageables?

Merci d'avance de vos réponse.
Cordialement.

7 réponses

  1. cocoche95 Messages postés 1187 Statut Contributeur 543
     
    Hello,

    Regardes du coté de Nagios.

    A plus
    0
  2. Utilisateur anonyme
     
    salut,

    Installer Nagios pour surveiller un script!?
    Quelle débauche de moyens !

    Regarde le man de ps, et comment il peut afficher uniquement les CODES D'ÉTAT DE PROCESSUS.
    Quand t'es content, tu testes dans un case les états qui doivent émettre une alerte.

    Enfin, quand tout fonctionne selon ton désir, tu mets ça sur un ligne dans crontab.
    0
  3. jivef Messages postés 1024 Statut Membre 306
     
    Bonjour,
    tu as pgrep qui affiche le numéro d'un processus et donc permet d'en tester l'existance.

    Le code retour de pgrep est 1 si le processus n'est pas trouvé et 0 si le processus est trouvé.
    A partir de là, créé un script comportant la commande pgrep et un test conditionnel sur son code retour. if [ $? = 1 ] par exemple...
    Ensuite en fonction de la réponse, tu envoie ton message avec mutt.
    mutt -s "Alerte : Script arrete" -a "/chemin/vers/Piecejointe monadresse@monfai

    A toi de jouer.

    0
  4. yann747 Messages postés 128 Statut Membre 2
     
    Bonjour,

    merci à vous trois pour vos réponses.

    En gros si j'ai bien compris je récupère le PID généré par le script lors de son lancement avec ${$} ou pgrep, une fois qu'il est fini, je fais un test sur son code retour,
    en fonction de cette valeur je fais envoyer un mail (ou non).

    Comment peut-on tester un code retour d'un script qui n'a plus de PID, puisqu'il est fini?
    Si je rajoute une ligne tout à la fin de mon script existant, le script ne sera pas encore fini, sera-t-il possible de tester quelque chose?

    Merci d'avance
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Utilisateur anonyme
     
    salut,

    Il faudrait que tu sois plus précis sur ce que veut dire "planter".
    0
  7. yann747 Messages postés 128 Statut Membre 2
     
    Salut,

    par planter, je pensais à un code retour du script différent de zéro.

    Sinon vérifier que le script ne plante pas en testant que chacune des lignes de commandes qui le compose retournent bien zéro ?

    mais peut-être est-ce une mauvaise idée...
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Salut,

      Sinon vérifier que le script ne plante pas en testant que chacune des lignes de commandes qui le compose retournent bien zéro ?

      Oui ça peut être une solution, mais tout dépend du nombre de commandes qui compose ton script, s'il y en a beaucoup ça peut être fastidieux ;-(

      Une solution pourrait être d'enchaîner chaque commande que si la précédente s'est bien déroulée, sinon on balance un code d'erreur.

      Exemple :

      (
      commande1 &&\
      commande2 &&\
      commande3 &&\
      ...
      commandeN
      ) || echo "Bad" && exit 3
      0
  8. yann747 Messages postés 128 Statut Membre 2
     
    Merci encore pour vos réponses,
    j'ai pris l'option de faire des vérifications après chaque ligne de commande car il n'y en a qu'une douzaine.
    j'ai crée un fonction :

    function verif {
        "$@"
        status=$?
        if [ $status -ne 0 ]; then
            echo "error with $1"
        fi
        return $status
    }
    
    verif commande1
    verif commande2
    
    0