Отправка почты с помощью Crontab [дубликат]

У меня проблема с отправкой почты в Crontab

#!/bin/sh
log_direc="/var/log/snort/alert"
email="vodeni1953@heroulo.com"
echo "TESST" | sendmail $email < output.txt`

Он может работать нормально по команде и можно отправлять почту. screenshot of e-mail

Но когда я помещаю этот скрипт в Cron вот так

MAILTO=vodeni1953@heroulo.com
* * * * * /bin/sh /home/weed/Desktop/test.sh

Похоже, это second e-mail screenshot

Как я могу это исправить? Спасибо

-2
задан 22 March 2021 в 12:42
1 ответ

Вы удалили переменную PATH в верхней части вашего кронтаба? Если она отсутствует, это объясняет, почему ваш сценарий не может найти sendmail. В типичном crontab определены следующие переменные. Я добавил строку и для вашего сценария.

# Global variables
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

* * * * * /bin/sh /home/weed/Desktop/test.sh

MAILTO в верхней части вашего crontab обычно используется для того, чтобы cron знал, куда отправлять письма. Сохраните индивидуальную конфигурацию в вашем скрипте.

Кроме того, вам понадобится абсолютный путь к файлу, который вы хотите отправить при запуске скрипта через cron. Похоже, что когда вы запускаете его вручную, вы находитесь в каталоге, в котором хотите, чтобы он выполнялся.

Вы также используете трубу для отправки вывода echo в sendmail, а также направляете информацию в standard-in. Уберите направление standard-in и просто поместите всю информацию, которую вы хотите отправить, в левую часть трубы:

log="/var/log/snort/alert/output.txt"
email="vodeni1953@heroulo.com"
cat $log | sendmail $email

Если вы хотите добавить что-то к отправляемому файлу, используйте следующее:

echo -e "Some Header\n\n$(cat $log)" | sendmail $email
0
ответ дан 24 April 2021 в 03:11

Теги

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