gpt4 book ai didi

python - 在脚本中成功但在 rc.local 中失败

转载 作者:行者123 更新时间:2023-12-04 19:15:34 26 4
gpt4 key购买 nike

我写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

部署.sh
#!/usr/bin/env
cd /home/spark/Desktop
python mail.py >>deploy.log
echo "-----------------------------------------------------------"

如果我执行“python mail.py”,我可以收到电子邮件。但是当我将它放在 rc.local 中时,我无法收到电子邮件,deploy.log 中的消息输出
[Errno -2 ] 名称或服务未知。

我对这个输出感到困惑。

最佳答案

这可能是因为 PATH rc.local 时不同运行。具体来说,web.sendmail可能期望找到 sendmail在路径中,但它还没有。参见文档 here .

路径可能特定于您的系统。要调试它,您可以从内部转储 rc.local到一个文件,例如 /tmp/rc.local.log并在系统启动时检查它:例如,env >>/tmp/rc.local.log .

请注意,如果您在启动期间安装了多个驱动器,则包含 sendmail 的驱动器那时可能还没有安装。这是一个痛苦的处理。要仔细检查,请添加 mount >>/tmp/rc.local.log .

关于python - 在脚本中成功但在 rc.local 中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38828731/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com