import poplib
import sys
import smtplib
from email.mime.text import MIMEText
import os
from email.header import decode_header
import email
import time
def check_email():
try:
p = poplib.POP3('pop.163.com')
p.user('*****@163.com')
p.pass_('*******')
ret = p.stat()
except:
print('Login failed!')
sys.exit(1)
str = p.top(ret[0], 0)
strlist = []
for x in str[1]:
try:
strlist.append(x.decode())
except:
try:
strlist.append(x.decode('gbk'))
except:
strlist.append((x.decode('big5')))
mm = email.message_from_string('\n'.join(strlist))
sub = decode_header(mm['subject'])
if sub[0][1]:
submsg = sub[0][0].decode(sub[0][1])
else:
submsg = sub[0][0]
if submsg.strip() == '关机':
return 0
elif submsg.strip() == '重新启动':
return 1
p.quit()
def send_email():
user = '*******@qq.com'
pwd = '**********'
to = ['*****@163.com', '*****@139.com'] #139邮件会有短信提醒,让我知道是否成功
msg = MIMEText('')
msg['Subject'] = '已收到命令!'
msg['From'] = user
msg['To'] = ','.join(to)
s = smtplib.SMTP('smtp.qq.com')
s.login(user, pwd)
s.sendmail(user, to, msg.as_string())
s.close() if __name__ == '__main__':
while True:
time.sleep(20)
if check_email() == 0:
send_email()
os.system('shutdown -s -t 1') #关机
break
if check_email() == 1:
send_email()
os.system('shutdown -r') #重新启动
break
測试成功

其他命令自行加入,这里仅仅作 关机和重新启动. 脑洞大开!

转载请注明作者与出处:http://blog.csdn.net/u013511642   王小涛_同學

最新文章

  1. spring boot 学习笔记(二) 构建web支持jsp
  2. c# using 引用和别名的使用
  3. zepto源码学习-02 工具方法-详细解读
  4. 在Git中一定要关注的crlf自动转换
  5. android Activity Application Context 的区别
  6. 使用JSONP进行跨域Ajax 调用
  7. [BZOJ1607] [Usaco2008 Dec] Patting Heads 轻拍牛头 (数学)
  8. EOJ3536 求蛇形矩阵每一行的和---找规律
  9. bzoj 4033: [HAOI2015]树上染色
  10. CF444E. DZY Loves Planting
  11. npm 和package.json 文件
  12. php把一些预定义的 HTML 实体转换为字符。
  13. 手动卸载Office2010
  14. Codeforces-541div2
  15. 【补】debug
  16. H3C交换机配置的备份与恢复(TFTP方法)
  17. centos 7.1开机/etc/rc.local脚本不执行的问题
  18. ubuntu16安装及嵌入式开发环境搭建
  19. 1、认识Struts2
  20. 定义一个类Point,代表一个点,public属性有x和y,方法有显示点坐标 show(),构造函数有两个参数分别给x,y赋值,在main方法中构造两个对象,再创建一方法(getMiddle)为取两个点构成线段的中点的坐标,参数为2个点对象,调用此方法后得到一个新的点,编写Application,显示该对象的坐标值。

热门文章

  1. crontab的使用
  2. String字符串的完美度
  3. 自己整理的css3动画库,附下载链接
  4. mysql外键创建失败原因
  5. (原创)HyperPacer使用技巧之集合点设置
  6. 阿里云ECS远程桌面连接失败
  7. 【LeetCode】3 、Longest Substring Without Repeating Characters
  8. zk strom 本地环境启动命令
  9. 《AlwaysRun!》第八次团队作业:Alpha冲刺 第二天
  10. 【Codeforces 158A】Next Round