Je crée des tâches cron dans Ubuntu en plaçant l'exécutable dans l'un des /etc/cron.{daily,hourly,monthly,weekly}
. Il y a beaucoup de 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
Je souhaite recevoir des courriers électroniques de mes scripts lorsque:
- Un script échoue et donne un code de sortie non nul.
- Le script a quelque chose à me dire
J'ai SSMTP installé et fonctionne, j'envoyer mes messages de mon compte Google. Le fait que SSMTP ne puisse envoyer du courrier qu'en utilisant un seul compte ne me pose pas de problème. C'est juste un serveur domestique et les utilisateurs que j'ai n'ont pas la possibilité d'ajouter des tâches cron.
J'aimerais savoir comment le mailing à partir de scripts fonctionne généralement sous Linux / Unix en général et Ubuntu en particulier. J'aimerais aussi connaître le bon moyen pour moi de recevoir des courriers dans les deux situations ci-dessus.
/etc/aliases
entrées ne sont-elles pas censées suivre le formatname: value1, value2, ...
? Je ne sais pas, le format a peut-être changé au cours des 8 dernières années.Afin de recevoir les courriers électroniques envoyés par vixie cron, vous aurez besoin de quelque chose qui réplique la commande sendmail. Donc installer postfix ou SSMTP va régler cette partie. Si vous utilisez postfix, le fichier alias peut être utilisé pour mapper les utilisateurs du système avec de véritables adresses électroniques.
Si vous ajoutez MAILTO = "[email protected]" au sommet d'une crontab, toute sortie du travail cron sera envoyée par courrier électronique. Ceci est indépendamment du code d'erreur.
Pour les scripts qui génèrent des erreurs correctement dans STDERR, il est facile de recevoir un courrier électronique uniquement lorsqu'ils se trompent, procédez comme suit:
Cela ne fera que rediriger le STDOUT vers null. Si des messages STDERR sont présents, ils recevront un courrier électronique.
Cependant, j'ai constaté que certains scripts produiraient des erreurs de manière incorrecte sous STDOUT et définiraient le code de sortie sur 1. Je n'ai pas trouvé de moyen de récupérer le résultat, mais ignore le résultat si le code de sortie est 0. La seule méthode Je peux penser est de rediriger la sortie vers un fichier, puis si le code de sortie n'est pas 0, le fichier doit être récupéré par cron. Cela semble assez horrible.
la source
Si vous voulez envoyer toutes les sorties (stdout et stderr) à une adresse spécifique, vous pouvez utiliser la
MAILTO
variable. Par exemple, placez le texte suivant en haut du script.la source
essayez d'ajouter "root: [email protected]" à / etc / aliases
qui enverra tous les messages de cet utilisateur à votre adresse email. si vous ne voulez pas tous les messages, vous pouvez créer un utilisateur spécifiquement pour cela.
Tant que le script génère quelque chose, vous recevrez un mail.
la source
Sur tous mes serveurs de production, qui exécutent généralement environ 20 tâches cron par jour, je ne jure que par le paquet python-cronwrap. Découvrez-le ici: http://pypi.python.org/pypi/cronwrap . C'est vraiment facile à configurer et surtout fiable.
la source
Je ne pense pas que SSMTP est à la hauteur de ce que vous devez faire. Vous avez besoin de quelque chose qui puisse "recevoir" du courrier des processus cron, puis l'envoyer à votre vraie boîte aux lettres.
J'utilise Sendmail, mais c'est parce que je suis une vieille main de Sun; Je sais que tous les enfants cools qui utilisent Postfix se moquent de nous. Votre communauté Ubuntu peut vous aider à configurer votre système de messagerie.
la source
Une alternative - J'archive tout le courrier root dans certains fichiers, puis je supprime le courrier d'origine.
Je cron un script (voici la partie clé) -
Cela garde les choses en ordre et je peux garder un œil dessus. Je pourrais envoyer un fichier de courrier quotidien à un identifiant de messagerie externe, etc.
la source