Оболочка для отправки вывода команды по электронной почте (например, cron)

Я ищу команду-оболочку (в идеале на Python), которая выполняет заданную команду и обрабатывает ее вывод (STDERR / STDOUT) аналогично cron:

  • , если вывода не было (и код возврата 0 ),ничего не делать
  • в противном случае отправить электронное письмо с выводом

Мне не нужна возможность подключаться к внешнему серверу, системной почтовой команды будет достаточно (я использую Linux).

Я обнаружил cronwrap , но его электронные письма слишком подробны. Существует также croncoat , но для него требуется внешний SMTP-сервер (что не всегда вариант для меня).

В идеале была бы оболочка, такая как croncoat, но с поддержкой mail и с настраиваемыми уведомлениями по электронной почте, поэтому мне не нужно настраивать исходный код.

(Я предполагаю, что это повторяющийся вопрос, но, вероятно, я просто использовал неправильные условия поиска.)

Вероятно, это ошибка

0
задан 3 January 2019 в 18:36
1 ответ

Можете ли вы просто поместить сценарий оболочки в /etc/cron.d/ ? Ниже приведен образец ( man 5 crontab для получения дополнительной информации). Задание cron отправит электронное письмо, содержащее информацию, содержащуюся в операторе echo .

Если вместо этого вы хотите создать собственное электронное письмо (с темой), это лучше всего сделать в test_condition.sh и убедитесь, что демон cron не видит вывод .

# run shell script every 15 minutes to test something
*/15 * * * *  root   /root/test_condition.sh || echo "Script exited with status 1" 

Скрипт /root/test_condition.sh (обязательно защитите его с помощью chmod 0750 или аналогичного)

#!/bin/sh
# do things... test cron by exiting with 1. Comment out the next line to test mail
exit 1

# otherwise exit with a 0 and handle the email from here. 
echo "I did some things. Things happened. Big things." | mail -s "Something happened" root@localhost
exit 0
0
ответ дан 5 December 2019 в 04:41

Теги

Похожие вопросы