Cron для отправки электронной почты, если файл не существует

У меня есть задание cron, которое выполняет скрипт оболочки, как показано ниже

00 01 * * * sh /backup/script.sh

Теперь мне нужно добавить функциональность в cron, чтобы, если этот скрипт не существует, он генерирует оповещение обо мне по электронной почте с помощью утилиты sendmail.

Что-то вроде

00 01 * * * find script and execute script or if find no result then email.
1
задан 10 September 2013 в 20:00

2 ответа

cron делает это для вас уже. В вашей записи crontab говорится:

00 01 * * * sh /backup/script.sh

В назначенное время cron выполнит указанную вами команду и отправит вам по электронной почте свой вывод.

Вывод sh /does/not/exist: . Таким образом, cron отправит вам электронное сообщение, если файл не существует.

Возможно, вам нужно будет убедиться, что ваша система настроена правильно для электронной почты, так что cron сможет успешно отправить вам электронное письмо. Вы упомянули sendmail; если sendmail настроен правильно, а по электронной почте работает ваш пользователь, то cron тоже будет работать.

Переменная MAILTO также может помочь, если вам нужно отправить по электронной почте другой адрес или если по электронной почте ваш пользователь не работа, но отправка по электронной почте определенного интернет-адреса электронной почты. Просто добавьте строку MAILTO=foo@example.com над существующей строкой.

2
ответ дан 24 May 2018 в 18:06
  • 1
    Вы хотите сказать, чтобы сделать что-то вроде 00 01 * * * sh /backup/script.sh | sendmail me@gmail.com, он будет выполнен и отправит мне свой результат по электронной почте? – Tarun 10 September 2013 в 20:37
  • 2
    Нет. Я имею в виду, что 00 01 * * * sh /backup/script.sh будет исполнен, а cron отправит вам свой результат по электронной почте. Это то, что делает cron по умолчанию: отправьте вам выход задания по электронной почте. cron вызывает сам sendmail, без необходимости делать что-либо дополнительно. Вам нужно только убедиться, что MTA вашей системы (например, постфикс, exim или sendmail) настроен правильно. – Robie Basak 10 September 2013 в 21:20

Ну, вам понадобится другой скрипт. Что-то вроде этого:

#!/bin/bash

file="/path/to/script.sh"

# if script.sh exists and is executable.
if [ -x $file ]; then
    # execute script.sh
    sh /path/to/script.sh
else 
    #send mail
    echo "script.sh doesn't exists or is not executable" | sendmail me@example.com
fi
0
ответ дан 24 May 2018 в 18:06

Другие вопросы по тегам:

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