我写mail.py(使用webpy)向我发送每台机器的IP地址。
#!/usr/bin/env python
#coding=utf-8
import web
def send_mail(send_to, subject, body, cc=None, bcc=None):
try:
web.config.smtp_server = 'xxxxx'
web.config.smtp_port = 25
web.config.smtp_username = 'xxx'
web.config.smtp_password = 'xxx'
web.config.smtp_starttls = True
send_from = 'xxx'
web.sendmail(send_from, send_to, subject, body, cc=cc, bcc=bcc)
return 1 #pass
except Exception, e:
print e
return -1 #fail
if __name__=='__main__':
print "in mail.py"
f=file('/home/spark/Desktop/ip.log')
f1=f.read()
f.close()
send_to = ['xxxx']
subject = 'xxxx'
body = 'ip:',f1
send_mail(send_to, subject, body)
rc.local中
bash deploy.sh &
exit 0
deploy.sh
#!/usr/bin/env
cd /home/spark/Desktop
python mail.py >>deploy.log
echo "-----------------------------------------------------------"
我可以收到电子邮件' python mail.py'。但是当我把它放在rc.local中时,我无法收到电子邮件,在deploy.log输出中的消息 [Errno -2]名称或服务未知。
我对这个输出感到困惑。
答案 0 :(得分:1)
这可能发生,因为PATH
在rc.local
运行时有所不同。具体来说,web.sendmail
可能会在路径中找到sendmail
,但它还没有。请参阅文档here。
路径可能特定于您的系统。要对此进行调试,您可以将rc.local
内的内容转储到/tmp/rc.local.log
等文件中,并在系统启动时进行检查:例如,env >>/tmp/rc.local.log
。
请注意,如果在启动期间安装了多个驱动器,则此时可能尚未安装包含sendmail
的驱动器。这是一个痛苦的处理。要仔细检查,请添加mount >>/tmp/rc.local.log
。