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代码打包为jar软件的简单方法
Aug 04 Python
Python实现自动登录百度空间的方法
Jun 10 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
Jul 06 Python
Python多线程应用于自动化测试操作示例
Dec 06 Python
Python数据类型之Set集合实例详解
May 07 Python
Python分布式进程中你会遇到的问题解析
May 28 Python
Pandas删除数据的几种情况(小结)
Jun 21 Python
pytorch-RNN进行回归曲线预测方式
Jan 14 Python
关于tf.reverse_sequence()简述
Jan 20 Python
python+OpenCV实现图像拼接
Mar 05 Python
Python爬虫爬取博客实现可视化过程解析
Jun 29 Python
python3中编码获取网页的实例方法
Nov 16 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
用文本文件制作留言板提示(上)
2006/10/09 PHP
php使用mysqli向数据库添加数据的方法
2015/03/20 PHP
jquery+thinkphp实现跨域抓取数据的方法
2016/10/15 PHP
用JavaScript脚本实现Web页面信息交互
2006/10/11 Javascript
Array的push与unshift方法性能比较分析
2011/03/05 Javascript
从面试题学习Javascript 面向对象(创建对象)
2012/03/30 Javascript
node.js WEB开发中图片验证码的实现方法
2014/06/03 Javascript
jquery 表单验证之通过 class验证表单不为空
2015/11/02 Javascript
JavaScript判断表单为空及获取焦点的方法
2016/02/12 Javascript
JQuery导航菜单选择特效
2016/04/11 Javascript
javascript设计模式之模块模式学习笔记
2017/02/15 Javascript
基于webpack 实用配置方法总结
2017/09/28 Javascript
详解vue项目首页加载速度优化
2017/10/18 Javascript
手写简单的jQuery雪花飘落效果实例
2018/04/22 jQuery
vue自动化表单实例分析
2018/05/06 Javascript
浅谈HTTP 缓存的那些事儿
2018/10/17 Javascript
node基于async/await对mysql进行封装
2019/06/20 Javascript
JS实现返回上一页并刷新页面的方法分析
2019/07/16 Javascript
细说webpack6 Babel的使用详解
2019/09/26 Javascript
python中多个装饰器的执行顺序详解
2018/10/08 Python
在Python中关于使用os模块遍历目录的实现方法
2019/01/03 Python
python 计算一个字符串中所有数字的和实例
2019/06/11 Python
Python帮你识破双11的套路
2019/11/11 Python
python flask中动态URL规则详解
2019/11/22 Python
关于Theano和Tensorflow多GPU使用问题
2020/06/19 Python
Python selenium键盘鼠标事件实现过程详解
2020/07/28 Python
HTML5 canvas基本绘图之图形组合
2016/06/27 HTML / CSS
如何找出EMP表里面SALARY第N高的employee
2013/12/05 面试题
校园之星获奖感言
2014/01/29 职场文书
校庆活动方案
2014/03/31 职场文书
小露珠教学反思
2014/04/30 职场文书
解决SpringBoot跨域的三种方式
2021/06/26 Java/Android
frg-100简单操作(设置)说明
2022/04/05 无线电
Python基本知识点总结
2022/04/07 Python
Linux中各个目录的作用与内容
2022/06/28 Servers
Python可视化神器pyecharts绘制水球图
2022/07/07 Python