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的Flask框架中实现分页功能的教程
Apr 20 Python
Python选课系统开发程序
Sep 02 Python
Python 文件处理注意事项总结
Apr 10 Python
PyTorch线性回归和逻辑回归实战示例
May 22 Python
详解Django中间件执行顺序
Jul 16 Python
基于python代码实现简易滤除数字的方法
Jul 17 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
Jun 27 Python
Pycharm 文件更改目录后,执行路径未更新的解决方法
Jul 19 Python
python批量解压zip文件的方法
Aug 20 Python
在Python中获取操作系统的进程信息
Aug 27 Python
Python基于Serializer实现字段验证及序列化
Nov 04 Python
如何用Python提取10000份log中的产品信息
Jan 14 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/11/28 PHP
php 常用类整理
2009/12/23 PHP
php自定义函数实现汉字转换utf8编码的方法
2016/09/29 PHP
浅谈PHP的exec()函数无返回值排查方法(必看)
2017/03/31 PHP
Laravel框架基于ajax和layer.js实现无刷新删除功能示例
2019/01/17 PHP
在vs2010中调试javascript代码方法
2011/02/11 Javascript
JavaScript中的this实例分析
2011/04/28 Javascript
javascript椭圆旋转相册实现代码
2012/01/16 Javascript
js+div实现图片滚动效果代码
2014/02/10 Javascript
js操作输入框提示信息且响应鼠标事件
2014/03/25 Javascript
解决jQuery上传插件Uploadify出现Http Error 302错误的方法
2015/12/18 Javascript
BootStrap使用file-input插件上传图片的方法
2016/09/05 Javascript
jQuery实现可拖拽的许愿墙效果【附demo源码下载】
2016/09/14 Javascript
使用jQuery ajaxupload插件实现无刷新上传文件
2017/04/23 jQuery
BootStrap Table 后台数据绑定、特殊列处理、排序功能
2017/05/27 Javascript
深入浅析JavaScript中的RegExp对象
2017/09/18 Javascript
vue加载完成后的回调函数方法
2018/09/07 Javascript
python基础教程之popen函数操作其它程序的输入和输出示例
2014/02/10 Python
基于Python如何使用AIML搭建聊天机器人
2016/01/27 Python
Python做简单的字符串匹配详解
2017/03/21 Python
VTK与Python实现机械臂三维模型可视化详解
2017/12/13 Python
Python3实现的简单验证码识别功能示例
2018/05/02 Python
python 划分数据集为训练集和测试集的方法
2018/12/11 Python
Flask缓存静态文件的具体方法
2020/08/02 Python
JD Sports法国:英国篮球和运动时尚的领导者
2017/09/28 全球购物
十佳青年个人事迹材料
2014/01/28 职场文书
摄影专业毕业生求职信
2014/03/13 职场文书
一年级学生期末评语
2014/04/21 职场文书
暑期培训心得体会
2014/09/02 职场文书
2015年幼儿园后勤工作总结
2015/04/25 职场文书
标会主持词应该怎么写?
2019/08/15 职场文书
css实现文章分割线样式的多种方法总结
2021/04/21 HTML / CSS
详解Vue的options
2021/05/15 Vue.js
Django实现WebSocket在线聊天室功能(channels库)
2021/09/25 Python
关于Python中进度条的六个实用技巧分享
2022/04/05 Python
方法汇总:Python 安装第三方库常用
2022/04/26 Python