У меня проблема с отправкой почты в Crontab
#!/bin/sh
log_direc="/var/log/snort/alert"
email="vodeni1953@heroulo.com"
echo "TESST" | sendmail $email < output.txt`
Он может работать нормально по команде и можно отправлять почту.
Но когда я помещаю этот скрипт в Cron вот так
MAILTO=vodeni1953@heroulo.com
* * * * * /bin/sh /home/weed/Desktop/test.sh
Как я могу это исправить? Спасибо
Вы удалили переменную 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