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实现的Excel文件读写类
Jul 30 Python
Python的Twisted框架中使用Deferred对象来管理回调函数
May 25 Python
基于并发服务器几种实现方法(总结)
Dec 29 Python
Python实现读取字符串按列分配后按行输出示例
Apr 17 Python
Python实现获取本地及远程图片大小的方法示例
Jul 21 Python
Python Numpy:找到list中的np.nan值方法
Oct 30 Python
python内置数据类型之列表操作
Nov 12 Python
Python Numpy库datetime类型的处理详解
Jul 13 Python
python实现两个文件夹的同步
Aug 29 Python
使用keras和tensorflow保存为可部署的pb格式
May 25 Python
python中的时区问题
Jan 14 Python
python os.listdir()乱码解决方案
Jan 31 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
教你在PHPStorm中配置Xdebug
2015/07/27 PHP
laravel中的一些简单实用功能
2018/11/03 PHP
解决laravel 表单提交-POST 异常的问题
2019/10/15 PHP
css动画效果之animation的常用样式
2021/03/09 HTML / CSS
jQuery 前的按键判断代码
2010/03/19 Javascript
同一页面多个商品倒计时JS 基于面向对象的javascript
2012/02/16 Javascript
javascript验证身份证号
2015/03/03 Javascript
javascript创建函数的20种方式汇总
2015/06/23 Javascript
jQuery实现下拉框左右移动(全部移动,已选移动)
2016/04/15 Javascript
js实现的页面加载完毕之前loading提示效果完整示例【附demo源码下载】
2016/08/02 Javascript
浅谈JavaScript 函数参数传递到底是值传递还是引用传递
2016/08/23 Javascript
基于Two.js实现星球环绕动画效果的示例
2017/11/06 Javascript
三种Webpack打包方式(小结)
2018/09/19 Javascript
layer ui插件显示tips时,修改字体颜色的实现方法
2019/09/11 Javascript
vue 实现通过vuex 存储值 在不同界面使用
2019/11/11 Javascript
angula中使用iframe点击后不执行变更检测的问题
2020/05/10 Javascript
理解JavaScript中的对象
2020/08/25 Javascript
vscode自定义vue模板的实现
2021/01/27 Vue.js
[01:19:34]2014 DOTA2国际邀请赛中国区预选赛 New Element VS Dream time
2014/05/22 DOTA
Python正则表达式介绍
2012/08/06 Python
Python中的各种装饰器详解
2015/04/11 Python
python线程池(threadpool)模块使用笔记详解
2017/11/17 Python
利用python实现微信头像加红色数字功能
2018/03/26 Python
django静态文件加载的方法
2018/05/20 Python
python 使用sys.stdin和fileinput读入标准输入的方法
2018/10/17 Python
Python字符串逆序的实现方法【一题多解】
2019/02/18 Python
基于python实现音乐播放器代码实例
2020/07/01 Python
python如何将图片转换素描画
2020/09/08 Python
Java中会存在内存泄漏吗,请简单描述
2016/12/22 面试题
大学应届毕业生求职信
2014/05/24 职场文书
保密工作承诺书
2014/08/29 职场文书
2014年企业工会工作总结
2014/11/12 职场文书
2015年五四青年节活动总结
2015/02/10 职场文书
创业计划书之游泳馆
2019/09/16 职场文书
八年级作文之感悟亲情
2019/11/20 职场文书
Python中seaborn库之countplot的数据可视化使用
2021/06/11 Python