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中内置的NotImplemented类型的用法
Mar 31 Python
Python3中常用的处理时间和实现定时任务的方法的介绍
Apr 07 Python
Python中的Matplotlib模块入门教程
Apr 15 Python
Python中的choice()方法使用详解
May 15 Python
基于Python和Scikit-Learn的机器学习探索
Oct 16 Python
Python设计模式之中介模式简单示例
Jan 09 Python
Python中 map()函数的用法详解
Jul 10 Python
pycharm 配置远程解释器的方法
Oct 28 Python
python xpath获取页面注释的方法
Jan 14 Python
基于Django框架的权限组件rbac实例讲解
Aug 31 Python
Django ModelForm组件原理及用法详解
Oct 12 Python
Python语言中的数据类型-序列
Feb 24 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基础知识:控制结构
2006/12/13 PHP
php简单开启gzip压缩方法(zlib.output_compression)
2013/04/13 PHP
标准PHP的AES加密算法类
2015/03/12 PHP
PHP微信开发之微信录音临时转永久存储
2018/01/26 PHP
bcastr2.0 通用的图片浏览器
2006/11/22 Javascript
小议Function.apply() 之一------(函数的劫持与对象的复制)
2006/11/30 Javascript
在 IE 中调用 javascript 打开 Excel 表
2006/12/21 Javascript
动态创建的表格单元格中的事件实现代码
2008/12/30 Javascript
js 动态文字滚动的例子
2011/01/17 Javascript
jQuery中children()方法用法实例
2015/01/07 Javascript
原生js结合html5制作小飞龙的简易跳球
2015/03/30 Javascript
jQuery的animate函数实现图文切换动画效果
2015/05/03 Javascript
jQuery实现简单的文件上传进度条效果
2020/03/26 Javascript
用js读写cookie的简单方法(推荐)
2016/08/08 Javascript
详解webpack进阶之loader篇
2017/08/23 Javascript
JS简单实现查看文档创建日期、修改日期和文档大小的方法示例
2018/04/08 Javascript
如何在微信小程序中使用骨架屏的步骤
2020/06/12 Javascript
[01:08:48]LGD vs OG 2018国际邀请赛淘汰赛BO3 第三场 8.25
2018/08/29 DOTA
查看TensorFlow checkpoint文件中的变量名和对应值方法
2018/06/14 Python
python2 与 pyhton3的输入语句写法小结
2018/09/10 Python
Django使用Jinja2模板引擎的示例代码
2019/08/09 Python
如何基于Python实现word文档重新排版
2020/09/29 Python
Python基于内置函数type创建新类型
2020/10/22 Python
python3中celery异步框架简单使用+守护进程方式启动
2021/01/20 Python
HTML5中indexedDB 数据库的使用实例
2017/05/11 HTML / CSS
美国护肤咨询及美容产品电商:Askderm
2017/02/24 全球购物
请写出 BOOL flag 与"零值"比较的 if 语句
2016/02/29 面试题
什么是动态端口(Dynamic Ports)?动态端口的范围是多少?
2014/12/12 面试题
酒店前厅员工辞职信
2014/01/08 职场文书
大班上学期幼儿评语
2014/04/30 职场文书
乳制品整治工作方案
2014/05/29 职场文书
学校学期工作总结
2015/08/13 职场文书
《红领巾真好》教学反思
2016/02/16 职场文书
辞职申请书范本
2019/05/20 职场文书
深入理解Vue的数据响应式
2021/05/15 Vue.js
Z-Order加速Hudi大规模数据集方案分析
2022/03/31 Servers