执行shell&来自通过POP发送的命令的python脚本

时间:2014-04-05 03:33:07

标签: python parsing raspberry-pi pop3 raspbian

当CPU达到或超过45摄氏度时,我设置了pi设置为通过谷歌帐户发送电话(XXXXXXXX@vtext.com)。我希望能够回复该帐户并让pi根据邮件内容执行各种脚本。例如,我可以输入“将风扇置于高位”。它将执行一个提高风扇速度的脚本。或者如果风扇已经处于高位,我希望能够输入“关机”。并关闭了pi。我有pi通过POP检查帐户,唯一的问题是无论我输入什么,它每次都会关闭,我无法想出这个。这超出了我的python知识。

我必须在某些时候搞错其他东西,因为它现在没有运行,这是错误:

Traceback (most recent call last):
  File "readTest.py", line 14, in <module>
    rebootMessage = [parser.Parser().parsestr(Reboot) for Reboot in messages]
  File "/usr/lib/python2.7/email/parser.py", line 82, in parsestr
    return self.parse(StringIO(text), headersonly=headersonly)
TypeError: expected read buffer, tuple found

这是代码:

import poplib
import os
from email import parser

pop_conn = poplib.POP3_SSL('pop.gmail.com')
pop_conn.user('XXXXXXXXXX')
pop_conn.pass_('XXXXXXXXXX')
#Get messages from server:
messages = [pop_conn.retr(i) for i in range(1, len(pop_conn.list()[1]) + 1)]
# Concat message pieces:
rebootMessage = ["\n".join(Reboot[1]) for Reboot in messages]
fanMessage = ["\n".join(PutFanOnHigh[1]) for PutFanOnHigh in messages]
#Parse message intom an email object:
rebootMessage = [parser.Parser().parsestr(Reboot) for Reboot in messages]
fanMessage = [parser.Parser().parsestr(PutFanOnHigh) for PutFanOnHigh in messages]

#If parsestr returns True for the current element (i.e. it's the string you're looking for)
for rebootMessage in messages:
  #os.system('sudo /storage/SKYNET/remoteReboot.sh')
        print rebootMessage
        print fanMessage
#If parsestr returns True for the current element (i.e. it's the string you're looking for)
for fanMessage in messages:
  #os.system('sudo /storage/SKYNET/fanSpeedHigh.py')
        print rebootMessage
        print fanMessage
pop_conn.quit()

0 个答案:

没有答案