Назад | Перейти на главную страницу

Невозможно отправить внешнюю электронную почту через crontab

Я пытаюсь отправить электронную почту из crontab. Я попытался заставить crontab запускать базовый сценарий оболочки, а также указать фактическую команду в crontab. Я пробовал сделать это с помощью mpack и ssmtp. Я заметил, что если я выполняю команду или сценарий оболочки в терминале, все работает нормально. Это терпит неудачу, только когда я пытаюсь запланировать это.

Это основная суть команды, которую мне нужно запустить, где я отправляю по электронной почте abc@abc.com содержимое файла. Файл создается ежедневно и назван в честь года, месяца и дня.

echo -e "to: abc@abc.com\nsubject: abc123\n" | ssmtp abc@abc.com < `date +%y%m%d`.txt

Аналогичная вещь с mpack

mpack -s "abc123" `date +%y%m%d`.txt abc@abc.com

Я понял, что это как-то связано с переменной даты. Если я заменю это фактическим именем файла, все будет работать нормально. Я постарался избежать символа% и безуспешно пытался заменить обратную кавычку на $ (date +% y% m% d).

Crontab выглядит так

10 10 * * * /home/user/./script.sh

Также пробовал этот метод

10 10 * * * echo -e "to: abc@abc.com\nsubject: abc123\n" | ssmtp abc@abc.com < `date +\%y\%m\%d`.txt

Я убедился, что сценарий оболочки включает #! / Bin / sh, проверил все права доступа к файлам и изменил путь к среде, включив в него каталоги для ssmtp и mpack.

Любые предложения, почему переменная даты делает это неуспешным? Мне нужно убегать от чего-нибудь еще?

Спасибо

Я думаю, вам следует указать полный путь к двоичным файлам и файлу.

Ваш script.sh должно выглядеть так:

#!/bin/sh    
/path/to/echo -e "to: abc@abc.com\nsubject: abc123\n" | /path/to/ssmtp abc@abc.com < /path/to/`date +%y%m%d`.txt

Тогда ваш Crontab должен быть таким:

10 10 * * * /home/user/script.sh

(при условии, что ваш скрипт имеет бит x chmod +x)