54 votes

Comment obtenir des courriels à partir de tâches cron (qui ont échoué) dans Ubuntu ?

Je crée des cron-jobs dans Ubuntu en plaçant l'exécutable dans l'un des emplacements suivants /etc/cron.{daily,hourly,monthly,weekly} . Il existe de nombreux répertoires commençant par cron :

kent@rat:~$ ls -ld /etc/cron*
drwxr-xr-x 2 root root 4096 2009-06-06 18:52 /etc/cron.d
drwxr-xr-x 2 root root 4096 2009-07-16 13:17 /etc/cron.daily
drwxr-xr-x 2 root root 4096 2009-06-06 18:52 /etc/cron.hourly
drwxr-xr-x 2 root root 4096 2009-06-06 18:52 /etc/cron.monthly
-rw-r--r-- 1 root root  724 2009-05-16 23:49 /etc/crontab
drwxr-xr-x 2 root root 4096 2009-06-06 18:52 /etc/cron.weekly

J'aimerais recevoir des e-mails de mes scripts quand :

  1. Un script échoue et donne un code de sortie non nul.
  2. Le script a quelque chose à me dire

J'ai SSMTP installé et fonctionnel, j'envoie mes mails depuis mon compte Google. Le fait que SSMTP ne puisse envoyer du courrier qu'à partir d'un seul compte n'est pas un problème pour moi. C'est juste un serveur domestique et les utilisateurs que j'ai n'ont pas la possibilité d'ajouter des cron-jobs.

J'aimerais savoir comment le mailing de scripts fonctionne habituellement dans Linux/Unix en général et dans Ubuntu en particulier. J'aimerais également connaître un bon moyen pour moi de recevoir des courriers dans les deux situations ci-dessus.

2voto

David Mackintosh Points 14093

Je ne pense pas que SSMTP soit à la hauteur de ce que vous attendez de lui. Vous avez besoin de quelque chose qui puisse "recevoir" le courrier des processus cron et l'envoyer ensuite à votre vraie boîte aux lettres.

J'utilise Sendmail, mais c'est parce que je suis un vieux routier de Sun ; je sais qu'il est la risée de tous les jeunes branchés qui utilisent Postfix. La communauté ubuntu peut vous aider à configurer votre système de messagerie.

2voto

Pawel Cioch Points 166

Une alternative - J'archive tout le courrier racine dans certains fichiers, puis je supprime le courrier original.

Je cron un script (voici la partie clé) -

#!/bin/bash
if `/usr/bin/mail -e`; then
   /usr/bin/mail --print 2>&1 > /tmp/email_${date +"%Y-%m-%d_%H.%M").log
   echo ‘d *’ | /usr/bin/mail -N > /dev/null
fi
exit 0

Cela permet de garder les choses en ordre et je peux garder un œil dessus. Je pourrais envoyer un fichier de courrier quotidien à une adresse e-mail externe, etc...

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