У меня есть задание cron, которое выполняет скрипт оболочки, как показано ниже
00 01 * * * sh /backup/script.sh
Теперь мне нужно добавить функциональность в cron, чтобы, если этот скрипт не существует, он генерирует оповещение обо мне по электронной почте с помощью утилиты sendmail.
Что-то вроде
00 01 * * * find script and execute script or if find no result then email.
cron делает это для вас уже. В вашей записи crontab говорится:
00 01 * * * sh /backup/script.sh
В назначенное время cron выполнит указанную вами команду и отправит вам по электронной почте свой вывод.
Вывод sh /does/not/exist: . Таким образом, cron отправит вам электронное сообщение, если файл не существует.
Возможно, вам нужно будет убедиться, что ваша система настроена правильно для электронной почты, так что cron сможет успешно отправить вам электронное письмо. Вы упомянули sendmail; если sendmail настроен правильно, а по электронной почте работает ваш пользователь, то cron тоже будет работать.
Переменная MAILTO также может помочь, если вам нужно отправить по электронной почте другой адрес или если по электронной почте ваш пользователь не работа, но отправка по электронной почте определенного интернет-адреса электронной почты. Просто добавьте строку MAILTO=foo@example.com над существующей строкой.
Ну, вам понадобится другой скрипт. Что-то вроде этого:
#!/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