python - succeed in script but fail in rc.local -


i write mail.py(use webpy) send me ip address of each machine.

#!/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 "-----------------------------------------------------------" 

i can receive email if 'python mail.py'.but when put in rc.local, can not receive email, message in deploy.log outputs [errno -2 ] name or service not known.

i puzzled output.

this might happen because path different when rc.local runs. specifically, web.sendmail might expect find sendmail in path, it's not there yet. see docs here.

the paths might specific system. debug dump things inside rc.local file such /tmp/rc.local.log , inspect when system up: e.g., env >>/tmp/rc.local.log.

note, if have multiple drives being mounted during startup, drive containing sendmail might not mounted yet @ point. pain deal with. double check, add mount >>/tmp/rc.local.log.


Comments

Popular posts from this blog

Spring Boot + JPA + Hibernate: Unable to locate persister -

go - Golang: panic: runtime error: invalid memory address or nil pointer dereference using bufio.Scanner -

c - double free or corruption (fasttop) -