Comment envoyer la sortie d'un cronjob à plusieurs adresses e-mail?

55

Au début d'un fichier crontab, vous pouvez utiliser l' MAILTOinstruction pour indiquer que vous souhaitez que le résultat soit envoyé sous forme de courrier électronique à une adresse électronique. Je voudrais envoyer la sortie à plusieurs adresses. Est-il possible (et comment) de spécifier plusieurs adresses?

Boaz
la source

Réponses:

72

Cela peut varier en fonction du paquet démon cron que vous utilisez, mais cela provient de la page de manuel de Vixie Cron sur Ubuntu Hardy:

Si MAILTO est défini (et non vide), un courrier est envoyé à l'utilisateur ainsi nommé. MAILTO peut également être utilisé pour envoyer du courrier à plusieurs destinataires en séparant les utilisateurs destinataires par une virgule. Si MAILTO est défini mais vide (MAILTO = ""), aucun courrier ne sera envoyé. Sinon, le courrier est envoyé au propriétaire de la crontab.

Si vous n'utilisez pas Vixie Cron ou si vous n'êtes pas sûr, essayez la page de manuel du fichier crontab: man 5 crontab

Exemple

MAILTO="[email protected],[email protected]"
ThatGraemeGuy
la source
12
Une chose à noter - utilisez simplement une virgule entre les adresses. N'utilisez pas non plus d'espace , sinon cron enregistrera l'adresse (probablement dans / var / log / cron ou / var / log / daemon) en tant que "UNSAFE" et refusera de l'envoyer à cette liste d'adresses.
David Gardner
1
Lors de la séparation d'adresses avec des espaces au lieu de virgules, il m'est arrivé d' cronenvoyer des mails à la première adresse uniquement (et de crontabne pas me plaindre lors de la sauvegarde des modifications, ce qui est dommage ). Il y a des erreurs dans le syslog ( (CRON) error (bad mailto)), mais personne ne s'en est aperçu ...
Tobias
11

Au lieu des réponses ci-dessus, vous pouvez envoyer un courrier électronique à une adresse unique, à savoir un groupe de courrier ou une liste de distribution. Cela fonctionne particulièrement bien si vous gérez plusieurs serveurs car il est plus facile de gérer les adresses sur votre serveur de messagerie plutôt que dans la crontab de chaque ordinateur individuel.

dtoubelis
la source
IMHO c'est la bonne réponse. Qui veut maintenir des listes individuelles d'adresses e-mail dans divers crontabs?
Satanicpuppy
J'ai créé une liste simple: 1. En tant que root, ajoutez un "destinataire virtuel" /etc/aliasesen ajoutant une ligne comme celle-ci: cron-listeners: [email protected], [email protected]2. Dans la table de vérification, définissez MAILTO=cron-listenersSi vous ne disposez pas d'un accès root, vous pouvez essayer la .forwardméthode à la place.
joeytwiddle
4

Une solution peut être un .forwardfichier sur ce compte utilisateur qui envoie un courrier aux adresses appropriées.

Matt Simmons
la source
1
+1 fichier .forward est le chemin à parcourir.
Sleske
0

La meilleure solution est probablement de rechercher dans votre page de manuel la version actuelle de cron / crontab de votre distribution pour voir si quelque chose peut être fait avec le paramètre MAILTO ou de spécifier une adresse mail qui à son tour transfère le courrier vers plusieurs adresses pour vous.

Bart Silverstrim
la source
0

Ajouter ,après chaque email, par exemple:MAILTO="[email protected],[email protected]"

dannyb2100
la source
3
Dans la documentation, les courriers électroniques sont séparés par une virgule, vous utilisez un point-virgule ici. Êtes-vous sûr que cette syntaxe fonctionne?
Physicalattraction
1
@MichaelHampton the ;ne fonctionne pas
030
@ Alfred je suis bien conscient de cela. Ainsi est l'autre personne qui a commenté!
Michael Hampton
1
@kasperd Parce qu'il n'est pas approprié de changer le sens des messages des autres. Cela ne concerne que l'affiche, et jusqu'à présent, il a choisi de ne pas la corriger. Les mauvaises réponses devraient être rejetées et commentées à la place.
Michael Hampton
1
Corrigé mon post. Je ne sais pas comment cela fonctionnait en 2010. Comme @ThatGraemeGuy dans un post ci-dessus. Peut dépendre du paquet Cron.
dannyb2100