python实现远程通过网络邮件控制计算机重启或关机


Posted in Python onFebruary 22, 2018

需求分析:

python实现一个远程通过网络邮件控制计算机重启或关机的项目。

程序流程:

python实现远程通过网络邮件控制计算机重启或关机

过程分析:

要实现本功能,首先要直到在本地如何通过Python控制计算机的重启和关机,然后需要知道如何远程发送消息给Python程序。可以在Python中执行CMD命令控制计算机的重启和关机,把发送电子邮件作为远程控制的渠道。Python程序自动登录邮箱检测邮件,当发送关机指令给这个邮箱时,则执行关机命令。

1.通过os.system()函数执行CMD命令

import os 
os.system('shutdown /s /t 1')

2.SMTP是一组用于由源地址到目的地址传送邮件的规则,可以控制信件的中转方式。SMTP属于TCP/IP协议簇,通过SMTP指定的服务器,可以把E-mail寄到收信人的服务器上。

import smtplib 
s=smtplib.SMTP('smtp.163.com') 
msg=s.ehlo() 
code=msg[0] 
print(msg) 
print("SMTP code is%d" %(code))

在发送E-mail时,客户应该以EHLO命令开始SMTP会话。如果命令成功,则服务器返回代码250。

3.POP用于使用客户端远程管理在服务器上的电子邮件。最流行的是POP3,属于TCP/IP协议簇,用于接收E-mail。

from poplib import POP3 
s=poplib.POP3(pop3.163.com) 
s.user(username) 
s.pass_(password) 
ret=s.stat()

具体实现:

控制端计算机程序:

import email 
import smtplib 
import time 
import os,sys 
import random 
 
def send_mail(): 
 try: 
 s=smtplib.SMTP('smtp.163.com')#连接服务器 
  s.login('fromusername','password')#登录发送发账号 
  msg="To:tousername@163.com\r\nFrom:fromusername@163.com\r\nSubject:shutdown \r\n\r\nshutdown\r\n"#设置邮件内容 
  s.sendmail('fromusername@163.com','tousername@163.com',msg)#发送邮件 
  s.close() 
   return 1 
 except (smtplib.SMTPException) as e: 
   print e 
   return 0 
   
if __name__=='__main__': 
   while send_mail()==0:#如果发送失败,10s后再发一次 
     time.sleep(10)

被控制端计算机程序:

#-*- encoding:utf-8 -*- 
import os,sys,string 
import poplib 
import os 
import time 
#pop3服务器地址 
host="pop3.163.com" 
#用户名 
username="***********@163.com" 
#密码 
password="******" 
 
#取第一封邮件完整信息,在返回值里,按行存储在down[1]的列表里,down[0]是返回的状态信息 
while True: 
   #创建一个POP3对象,这个时候实际上已经连接到服务器 
   p=poplib.POP3(host) 
   #向服务器发送用户名 
   p.user(username) 
   #向服务器发送密码 
   p.pass_(password) 
   #列出邮件信息,num为邮件数量,total_size为邮件总的大小 
   num,total_size=p.stat() 
   down=p.retr(num)#获取最新邮件到元组down 
   #元组down的第2个元素为邮件内容 
   mails=down[1] 
   print mails 
   for line in mails:#遍历邮件内容的每一行 
    if line.find('Subject')==0:#找到标题行 
     print line 
    if line.find('shutdown')>0:#如果标题为shutdown 
     p.dele(num)#删除该邮件,以防下次遍历时造成重复关机 
      p.quit()#关机前退出邮箱 
     print 'shutdown...' 
     os.system(' shutdown /s /t 10')#关机 
 
   p.quit()#每次轮询最后都退出邮箱 
   time.sleep(5)#每次轮询都休眠5s

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现定时同步本机与北京时间的方法
Mar 24 Python
简单介绍Python中的len()函数的使用
Apr 07 Python
调试Python程序代码的几种方法总结
Apr 28 Python
Python实现类似jQuery使用中的链式调用的示例
Jun 16 Python
python爬取w3shcool的JQuery课程并且保存到本地
Apr 06 Python
Python入门_浅谈for循环、while循环
May 16 Python
在Python中使用AOP实现Redis缓存示例
Jul 11 Python
对python读取zip压缩文件里面的csv数据实例详解
Feb 08 Python
PyTorch的深度学习入门之PyTorch安装和配置
Jun 27 Python
Django rstful登陆认证并检查session是否过期代码实例
Aug 13 Python
3种python调用其他脚本的方法
Jan 06 Python
Django程序的优化技巧
Apr 29 Python
python实现微信发送邮件关闭电脑功能
Feb 22 #Python
python使用itchat实现手机控制电脑
Feb 22 #Python
Python实现利用163邮箱远程关电脑脚本
Feb 22 #Python
Python3.4实现远程控制电脑开关机
Feb 22 #Python
python实现微信远程控制电脑
Feb 22 #Python
Python标准库笔记struct模块的使用
Feb 22 #Python
python实现手机通讯录搜索功能
Feb 22 #Python
You might like
追忆往昔!浅谈收音机的百年发展历史
2021/03/01 无线电
php操作xml
2013/10/27 PHP
php中session退出登陆问题
2014/02/27 PHP
Yii1.1框架实现PHP极光推送消息通知功能
2018/09/06 PHP
js前台分页显示后端JAVA数据响应
2013/03/18 Javascript
关于div自适应高度/左右高度自适应一致的js代码
2013/03/22 Javascript
JavaScript实现多维数组的方法
2013/11/20 Javascript
一个JavaScript处理textarea中的字符成每一行实例
2014/09/22 Javascript
在easyUI开发中,出现jquery.easyui.min.js函数库问题的解决办法
2015/09/11 Javascript
javascript创建含数字字母的随机字符串方法总结
2016/08/01 Javascript
用iframe实现不刷新整个页面上传图片的实例
2016/11/18 Javascript
解决Node.js使用MySQL出现connect ECONNREFUSED 127.0.0.1:3306的问题
2017/03/09 Javascript
vue中的自定义分页插件组件的示例
2018/08/18 Javascript
python删除指定类型(或非指定)的文件实例详解
2015/07/06 Python
Python2中文处理纪要的实现方法
2018/03/10 Python
Python简单实现两个任意字符串乘积的方法示例
2018/04/12 Python
python实现雨滴下落到地面效果
2018/06/21 Python
Python Opencv实现图像轮廓识别功能
2020/03/23 Python
在Python中构建增广矩阵的实现方法
2019/07/01 Python
python可视化爬虫界面之天气查询
2019/07/03 Python
python中前缀运算符 *和 **的用法示例详解
2020/05/28 Python
Sneaker Studio乌克兰:购买运动鞋
2018/03/26 全球购物
巴黎卡诗加拿大官网:Kérastase加拿大
2018/11/12 全球购物
美国尼曼百货官网:Neiman Marcus
2019/09/05 全球购物
局部内部类是否可以访问非final变量?
2013/04/20 面试题
什么是命名空间(NameSpace)
2015/11/24 面试题
Linux管理员面试经常问道的相关命令
2014/12/12 面试题
杠杆的科学教学反思
2014/01/10 职场文书
大学毕业自我评价
2014/02/02 职场文书
李开复演讲稿
2014/05/24 职场文书
保密工作承诺书
2014/08/29 职场文书
市委常委会班子党的群众路线教育实践活动整改方案
2014/10/25 职场文书
2015年安全保卫工作总结
2015/05/14 职场文书
法院答辩状格式
2015/05/22 职场文书
Java实现HTML转为Word的示例代码
2022/06/28 Java/Android
Nginx跨域问题解析与解决
2022/08/05 Servers