Я пытаюсь отправить электронную почту из 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
)