Surveiller un script

Résolu
yann747 Messages postés 127 Date d'inscription   Statut Membre Dernière intervention   -  
yann747 Messages postés 127 Date d'inscription   Statut Membre Dernière intervention   -
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.
A voir également:

7 réponses

cocoche95 Messages postés 1134 Date d'inscription   Statut Contributeur Dernière intervention   543
 
Hello,

Regardes du coté de Nagios.

A plus
0
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
jivef Messages postés 927 Date d'inscription   Statut Membre Dernière intervention   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
yann747 Messages postés 127 Date d'inscription   Statut Membre Dernière intervention   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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
 
salut,

Il faudrait que tu sois plus précis sur ce que veut dire "planter".
0
yann747 Messages postés 127 Date d'inscription   Statut Membre Dernière intervention   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
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
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
yann747 Messages postés 127 Date d'inscription   Statut Membre Dernière intervention   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