2014-11-14 6 views
0

Мой sendmail.sh скрипт на Raspbian OS способен успешно отправить электронное письмо. Но когда он вызван из сценария python, я получаю сообщение об ошибке "mail: can not send message: process exited with non zero status". Я проверил, что ssmtp настроен правильно, выполнив команду sendmail.sh вручную.Ошибка отправки электронной почты, вызвав скрипт bash

sendmail.sh

#!/bin/bash 
echo "test" | mail -s "test msg" myemailaddress 

разрешение на sendmail.sh является 777. sendmail.sh и sendmail.py находится в том же каталоге.

sendmail.py

import os 
import subprocess 
subprocess.call(['./sendmail.sh']) 

Команда Я использую для запуска питона - sudo python sendmail.py.

Я не понимаю, почему возникает ошибка. Очевидно, что python вызывает sendmail.sh, а на скрипте установлены правильные разрешения. Если запустить sendmail.sh вручную, почта отправляется правильно.

+0

Любые сообщения об ошибках? –

+0

Btw, используйте 'check_call', а не' call', если вы не проверите статус выхода вручную (что, по-видимому, вы этого не сделаете). –

+1

Независимо от вашей проблемы, ** chmod 777 является неправильным и опасным **. Пожалуйста, немедленно верните разрешения на что-то разумное (0755 будет казаться подходящим здесь). – tripleee

ответ

1

Основной причиной является сообщение об ошибке ssmtpmail, что наиболее бесполезно.

Быстрая прибегая к помощи он показывает http://www.raspberrypi.org/forums/viewtopic.php?t=46218&p=386393, который говорит следующее:

Попробуйте выполнить команду с дополнительным параметром -d, чтобы получить больше информации об отладке, чтобы помочь определить причину проблемы:

echo "Test" | почта -d -s "Тест" [email protected]

< ...>

Я проверил мои журналы ошибок, и заметил это:

< дата время > raspberrypi SSMTP [3477 ]: < кучу сообщений, в том числе ошибки, показывающий причину >

+0

Благодарим вас за предложение установить флаг отладки. Из отладки я определил проблему. Скрипты в этом случае python и shell принадлежат пользователю «pi». Однако для работы, которую мне нужно сделать, python нужно запускать как sudo, потому что оболочка вызывается из этого скрипта python, скрипт оболочки запускается как «sudo». Поскольку ssmtp настроен на отправку электронной почты только как пользователь «pi», скрипт python выдавал ошибку при выполнении sendmail.sh. – user702886

+0

Спасибо всем, кто нашел время, чтобы ответить на вопрос. Цените помощь. – user702886

-2

Вы можете попробовать эту команду:

os.system('./sendmail.sh') 
+1

-1 Почему, по-вашему, может помочь rephrasibg fork и exec? – tripleee

+0

, потому что я тестировал его, он хорошо работает – NeoWu

Смежные вопросы