URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 96441
[ Назад ]

Исходное сообщение
"sendmail отправляет пустые письма из cron"

Отправлено deatwisedog , 01-Фев-16 10:45 
Добрый день!
Столкнулся с необычной для меня проблемой - не могу отправить письмо из cron через sendmail.
Письмо отправляется, но приходит с пустым телом/сабжем.

Если запускаю скрипт руками - всё работает, но при запуске через крон... Та же история.

Кусок кода с отправкой:

#!/bin/bash
#DATE=$(date +%d_%m_%Y)
MAIL_SUBJECT=""
MAIL_TO="recipient@domain.com"
echo $MAIL_SUBJECT > /mailtext.txt
echo Replication started! >> /mailtext.txt
sendmail $MAIL_TO < /mailtext.txt

Пробовал с разным указанием путей к файлу.
Пробовал и просто mailtext.txt (без указания пути) и /home/user/mailtext.txt

Скрипт в кроне запускается от рута. Куда копать?


Содержание

Сообщения в этом обсуждении
"sendmail отправляет пустые письма из cron"
Отправлено skvernobot , 01-Фев-16 11:06 
>[оверквотинг удален]
> #!/bin/bash
> #DATE=$(date +%d_%m_%Y)
> MAIL_SUBJECT=""
> MAIL_TO="recipient@domain.com"
> echo $MAIL_SUBJECT > /mailtext.txt
> echo Replication started! >> /mailtext.txt
> sendmail $MAIL_TO < /mailtext.txt
> Пробовал с разным указанием путей к файлу.
> Пробовал и просто mailtext.txt (без указания пути) и /home/user/mailtext.txt
> Скрипт в кроне запускается от рута. Куда копать?

$ which sendmail
/usr/sbin/sendmail

укажите полный путь к sendmail в скрипте.


"sendmail отправляет пустые письма из cron"
Отправлено Deatwisedogmobile , 01-Фев-16 11:34 

> $ which sendmail
> /usr/sbin/sendmail
> укажите полный путь к sendmail в скрипте.

Указал (/usr/sbin/sendmail)
Не помогло. Также пустые письма.


"sendmail отправляет пустые письма из cron"
Отправлено deatwisedog , 01-Фев-16 12:14 
>> $ which sendmail
>> /usr/sbin/sendmail
>> укажите полный путь к sendmail в скрипте.
> Указал (/usr/sbin/sendmail)
> Не помогло. Также пустые письма.

Команда из крона (одна из):

# *  *  *  *  * user-name command to be executed
0 4 * * * root /root/movetomove.sh


"sendmail отправляет пустые письма из cron"
Отправлено skvernobot , 01-Фев-16 13:24 
>> $ which sendmail
>> /usr/sbin/sendmail
>> укажите полный путь к sendmail в скрипте.
> Указал (/usr/sbin/sendmail)
> Не помогло. Также пустые письма.

echo "Subject: test" | /usr/sbin/sendmail user@domain.com
пиши прям так... )


"sendmail отправляет пустые письма из cron"
Отправлено deatwisedog , 01-Фев-16 13:36 
>>> $ which sendmail
>>> /usr/sbin/sendmail
>>> укажите полный путь к sendmail в скрипте.
>> Указал (/usr/sbin/sendmail)
>> Не помогло. Также пустые письма.
> echo "Subject: test" | /usr/sbin/sendmail user@domain.com
> пиши прям так... )

Прям так заработало! Уже круто.
Хорошо, а как тогда на вход сэндмэйлу ещё и тело письма вкорячить? Если я правильно понял его ман, то тело для него начинается с новой строки, после сабжа. Перевод каретки внутри echo сделать?


"sendmail отправляет пустые письма из cron"
Отправлено lavr , 01-Фев-16 14:02 
>[оверквотинг удален]
>>>> /usr/sbin/sendmail
>>>> укажите полный путь к sendmail в скрипте.
>>> Указал (/usr/sbin/sendmail)
>>> Не помогло. Также пустые письма.
>> echo "Subject: test" | /usr/sbin/sendmail user@domain.com
>> пиши прям так... )
> Прям так заработало! Уже круто.
> Хорошо, а как тогда на вход сэндмэйлу ещё и тело письма вкорячить?
> Если я правильно понял его ман, то тело для него начинается
> с новой строки, после сабжа. Перевод каретки внутри echo сделать?

воспользуйтесь утилитой mail, если не знаете как работает sendmail


"sendmail отправляет пустые письма из cron"
Отправлено deatwisedog , 01-Фев-16 14:04 
>[оверквотинг удален]
>>>>> укажите полный путь к sendmail в скрипте.
>>>> Указал (/usr/sbin/sendmail)
>>>> Не помогло. Также пустые письма.
>>> echo "Subject: test" | /usr/sbin/sendmail user@domain.com
>>> пиши прям так... )
>> Прям так заработало! Уже круто.
>> Хорошо, а как тогда на вход сэндмэйлу ещё и тело письма вкорячить?
>> Если я правильно понял его ман, то тело для него начинается
>> с новой строки, после сабжа. Перевод каретки внутри echo сделать?
> воспользуйтесь утилитой mail, если не знаете как работает sendmail

Через sendmail я регулярно отправляю уведомления из скриптов, и всё работает.
Но из крона - впервые, вот и хочу разобраться.


"sendmail отправляет пустые письма из cron"
Отправлено skvernobot , 01-Фев-16 14:22 
>[оверквотинг удален]
>>>>> Не помогло. Также пустые письма.
>>>> echo "Subject: test" | /usr/sbin/sendmail user@domain.com
>>>> пиши прям так... )
>>> Прям так заработало! Уже круто.
>>> Хорошо, а как тогда на вход сэндмэйлу ещё и тело письма вкорячить?
>>> Если я правильно понял его ман, то тело для него начинается
>>> с новой строки, после сабжа. Перевод каретки внутри echo сделать?
>> воспользуйтесь утилитой mail, если не знаете как работает sendmail
> Через sendmail я регулярно отправляю уведомления из скриптов, и всё работает.
> Но из крона - впервые, вот и хочу разобраться.

Еще как мне кажется проблема в строчке: echo Replication started! >> путькфайлу/mailtext.txt
Попробуйте её сделать в кавычках: echo "Replication started!"" >> путькфайлу/mailtext.txt


"sendmail отправляет пустые письма из cron"
Отправлено deatwisedog , 01-Фев-16 15:47 
> Еще как мне кажется проблема в строчке: echo Replication started! >> путькфайлу/mailtext.txt
> Попробуйте её сделать в кавычках: echo "Replication started!"" >> путькфайлу/mailtext.txt

Эффекта, к сожалению, не возымело.
В принципе, я и без проверки думал что не заработает, т.к. изначально строка выглядела примерно так:
sendmail recipient@domain.com < /path/to/file.

А, вот, за подсказку с cat-ом спасибо - помогло.

Сейчас часть кода с отправкой выглядит так:

MAIL_SUBJECT="Subject: It a subject of the mail"
MAIL_TO="recipient@domain.com"

cat - /dir/MessageName.txt | sendmail -t $MAIL_TO
В начало файла загнал Subject: по умолчанию.

А если отправить нужно с другим сабжем (Тем, который в скрипте) - то уже вызов выглядит так:

echo $MAIL_SUBJECT | cat - /dir/MessageName.txt | sendmail -t $MAIL_TO


В этом случае письмо уходит с сабжем из переменной, а сабж из файла игнорируется.
Думаю, вся проблема заключается в том, что cron запускает sendmail в минимальном окружении и есть какие-то отличия в PATH, в таком случае.

Спасибо, [SOLVED] !


"sendmail отправляет пустые письма из cron"
Отправлено Pahanivo , 01-Фев-16 17:09 
> Через sendmail я регулярно отправляю уведомления из скриптов, и всё работает.
> Но из крона - впервые, вот и хочу разобраться.

рукалицо ....


"sendmail отправляет пустые письма из cron"
Отправлено skvernobot , 01-Фев-16 14:20 
>[оверквотинг удален]
>>>> /usr/sbin/sendmail
>>>> укажите полный путь к sendmail в скрипте.
>>> Указал (/usr/sbin/sendmail)
>>> Не помогло. Также пустые письма.
>> echo "Subject: test" | /usr/sbin/sendmail user@domain.com
>> пиши прям так... )
> Прям так заработало! Уже круто.
> Хорошо, а как тогда на вход сэндмэйлу ещё и тело письма вкорячить?
> Если я правильно понял его ман, то тело для него начинается
> с новой строки, после сабжа. Перевод каретки внутри echo сделать?

echo "Subject: Testing" | cat - /home/file1.out | /usr/sbin/sendmail -t user@domain.com


"sendmail отправляет пустые письма из cron"
Отправлено skvernobot , 01-Фев-16 15:51 
>[оверквотинг удален]
>>>> /usr/sbin/sendmail
>>>> укажите полный путь к sendmail в скрипте.
>>> Указал (/usr/sbin/sendmail)
>>> Не помогло. Также пустые письма.
>> echo "Subject: test" | /usr/sbin/sendmail user@domain.com
>> пиши прям так... )
> Прям так заработало! Уже круто.
> Хорошо, а как тогда на вход сэндмэйлу ещё и тело письма вкорячить?
> Если я правильно понял его ман, то тело для него начинается
> с новой строки, после сабжа. Перевод каретки внутри echo сделать?

http://unix.stackexchange.com/questions/168232/what-is-the-f...

тоже полезно может быть.


"sendmail отправляет пустые письма из cron"
Отправлено deatwisedog , 01-Фев-16 16:13 
> http://unix.stackexchange.com/questions/168232/what-is-the-f...
> тоже полезно может быть.

Действительно полезно, спасибо!