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使用PyGreSQL操作PostgreSQL数据库教程
Jul 30 Python
Python的Flask框架应用程序实现使用QQ账号登录的方法
Jun 07 Python
pandas数据处理基础之筛选指定行或者指定列的数据
May 03 Python
详解Django中间件执行顺序
Jul 16 Python
从请求到响应过程中django都做了哪些处理
Aug 01 Python
python 读取修改pcap包的例子
Jul 23 Python
python函数局部变量、全局变量、递归知识点总结
Nov 15 Python
使用PyTorch将文件夹下的图片分为训练集和验证集实例
Jan 08 Python
Python如何省略括号方法详解
Mar 21 Python
详解Python yaml模块
Sep 23 Python
python help函数实例用法
Dec 06 Python
使用Django框架创建项目
Jun 10 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
PHP用户指南-cookies部分
2006/10/09 PHP
php中filter_input函数用法分析
2014/11/15 PHP
PHP用反撇号执行外部命令
2015/04/14 PHP
php数组函数array_key_exists()小结
2015/12/10 PHP
Laravel中错误与异常处理的用法示例
2018/09/16 PHP
Laravel 队列使用的实现
2019/01/08 PHP
js 页面传参数时 参数值含特殊字符的问题
2009/12/13 Javascript
javascript getElementsByTagName
2011/01/31 Javascript
jQuery选择器中含有空格的使用示例及注意事项
2013/08/25 Javascript
javascript自定义startWith()和endWith()的两种方法
2013/11/11 Javascript
node+express+ejs制作简单页面上手指南
2014/11/26 Javascript
基于jQuery实现仿淘宝套餐选择插件
2015/03/04 Javascript
实现前后端数据交互方法汇总
2015/04/07 Javascript
javascript最基本的函数汇总
2015/06/25 Javascript
理解javascript定时器中的单线程
2016/02/23 Javascript
Vue-Router实现页面正在加载特效方法示例
2017/02/12 Javascript
使用cookie绕过验证码登录的实现代码
2017/10/12 Javascript
javaScript产生随机数的用法小结
2018/04/21 Javascript
Vue在 Nuxt.js 中重定向 404 页面的方法
2019/04/23 Javascript
vue项目中使用scss的方法步骤
2019/05/16 Javascript
node.js事件轮询机制原理知识点
2019/12/22 Javascript
Electron整合React使用搭建开发环境的步骤详解
2020/06/07 Javascript
解决Vue + Echarts 使用markLine标线(precision精度问题)
2020/07/20 Javascript
Python性能优化技巧
2015/03/09 Python
浅谈Python类的__getitem__和__setitem__特殊方法
2016/12/25 Python
Django中的FBV和CBV用法详解
2019/09/15 Python
CSS3 please 跨浏览器的CSS3产生器
2010/03/14 HTML / CSS
CSS3实现10种Loading效果
2016/07/11 HTML / CSS
借助HTML5 Canvas来绘制三角形和矩形等多边形的方法
2016/03/14 HTML / CSS
初始化了一个没有run()方法的线程类,是否会出错?
2014/03/27 面试题
教师求职推荐信范文
2013/11/20 职场文书
初中生期末考试的自我评价
2013/12/17 职场文书
入党积极分子批评与自我批评思想汇报
2014/09/14 职场文书
授权委托书协议书
2014/10/16 职场文书
Golang生成Excel文档的方法步骤
2021/06/09 Golang
win10重装系统后上不了网怎么办 win10重装系统网络故障的解决办法
2022/07/23 数码科技