web-dev-qa-db-fra.com

Comment modifier un sujet de courrier électronique Cronjob

J'exécute une demi-douzaine de tâches cron différentes depuis mon hébergement sur Hostmonster.com. Quand un cronjob a été exécuté, je reçois un email avec la sortie du script.

L'e-mail est au format:

De: Cron Daemon 
 Objet: Cron/ramdisk/bin/php5 -c /home5/username/scheduled/optimize_mysql.bash

Le problème est que le sujet de l'e-mail rend très difficile la lecture du cronjob auquel l'e-mail se rapporte.

Existe-t-il un moyen de modifier le sujet d'un e-mail cronjob afin qu'il soit plus facile à lire?

Par exemple:

 De: Cron Daemon 
 Objet: Optimiser la base de données MySQL 
51
justinl

Sur mes systèmes (la plupart de Debian), toutes les sorties, à partir d'un script/programme appelé comme entrée crontab, sont envoyées par e-mail au account@localhost qui a initié le cron. Ces e-mails ont un sujet comme le vôtre.

Si vous souhaitez recevoir un e-mail, écrivez un script qui n'a pas de sortie à lui seul. Mais placez toutes les sorties dans un fichier texte.

Et avec

mail -s 'your subject' adress@where < textfile

vous le recevez comme vous le souhaitez.

11
Michèle

Ou utilisez la commande sh noop (:)

0 9-17 * * 1-5    : Queue Summary; PATH=/usr/sbin qshape

Le sujet semble toujours kludgey, mais au moins il est descriptif et ne nécessite aucun script superflu.

56
Anthony

Envoyez directement la sortie de votre tâche cron à votre courrier électronique, puis vous pourrez remplir la ligne d'objet. la syntaxe 2>&1 envoie toute sortie d'erreur qui autrement disparaîtrait.

mycmd 2>&1 | mail -s "mycmd output" myname
22
Mark Harrison

Prenez en charge la responsabilité de crond pour l'envoi de la sortie de commande (ou non s'il n'y en a pas) en canalisant la sortie et stderr dans 'mailx -E'. Par exemple:

0 * * * * your-command 2>&1 | mailx -E -s "Descriptive Subject" $LOGNAME

L'option "-E" de Mailx est agréable car, tout comme crond lui-même, il n'enverra pas de courrier s'il n'y a aucune sortie à envoyer.

13
Alexis Huxley

Une autre solution consiste à écrire un script Shell avec la ligne d'objet que vous souhaitez appeler la bonne commande. Dans votre exemple, ce serait:

#Optimize_MySQL_Database.sh

/ramdisk/bin/php5 -c /home5/username/scheduled/optimize_mysql.bash

Vous pouvez inclure votre répertoire bin dans le chemin d'accès en le définissant dans le fichier crontab.

2
kbk7173

ESSAYEZ CECI - Dans la ligne de commande, implémentez le code suivant ---

/usr/local/bin/php -q /path /hostname/foldername/Page-You-want-to-execute \
   | **mail -s "*SUBJECT*" [email protected].**
  • Ceci est juste une référence pour vous guider
0
sudhu