1 votes

Y a-t-il un programme sous Linux qui exécutera une commande et enverra un email s'il échoue ?

J'ai un processus qui est lancé par Ron de cette manière :

timeout 1h /app/longprocess.sh

Maintenant je veux être notifié par email s'il se passe quelque chose de mal avec ça. Imaginez ceci :

notifyme maintainer@example.org timeout 1h /app/longprocess.sh

notifyme est une commande supposée qui enverra un email à maintainer@example.org avec la sortie de la commande au cas où la commande se termine avec un statut différent de zéro. Y a-t-il quelque chose comme ça?

2voto

James Mertz Points 390

Le cron envoie déjà des mails, si un /usr/sbin/sendmail compatible est installé (par exemple msmtp, ssmtp, Postfix, OpenSMTPD…). Voir aussi : Quel est le message "Vous avez un nouveau courrier" dans Linux/UNIX ?

chronic de moreutils peut gérer la partie "uniquement en cas de succès" :

chronic timeout 1h /app/longprocess.sh

2voto

frooyo Points 658
sometask||echo Quelque chose s'est mal passé! | mail -s ObjetMail user@example.com

Le || ne s'exécutera que ce qui est à droite, si la commande à gauche renvoie un code d'erreur non nul. Cette fonctionnalité est intégrée à l'interpréteur de commandes (je vois que cette question a l'étiquette "bash"), donc aucun programme externe supplémentaire n'est nécessaire pour prendre en charge cette fonctionnalité. Le programme "mail" est assez couramment pré-installé sur de nombreux systèmes d'exploitation.

De manière similaire, vous pourriez faire :

sometask&&echo Quelque chose s'est bien passé! | mail -s ObjetMail user@example.com

qui n'exécuterait que ce qui est à droite si les choses étaient réussies. (Par "réussies", je veux dire spécifiquement que "zéro" est le code de retour de la commande spécifiée à gauche.)

Modifications : J'ai initialement écrit ceci tard dans la nuit et, malheureusement, une mise à jour était requise pour la précision, c'est pourquoi des commentaires ont souligné certains aspects de la réponse. (Merci à MariusMatutiae and grawity!) J'ai décidé que, à long terme, corriger la réponse est mieux que de la laisser dans un état plus sujet à causer de la confusion.

-2voto

amit singh Points 167

Vous pouvez toujours utiliser la méthode suivante en ajoutant :

MAILTO=xyz@example.com

dans votre cron et vous serez informé. J'ai essayé cela et cela a fonctionné pour moi à chaque fois.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X