Python 利用邮件系统完成远程控制电脑的实现(关机、重启等)

0. 我们如何通过邮件系统完成远程控制电脑(关机、重启等)?

实现思路:

需要有两个邮箱:接收指令邮箱(A)发送指令邮箱(B)

被控制的电脑(查看 A 邮箱):
1. 每隔指定时间监听 A 邮箱 查看最近的邮件
2. 打开最近邮件,看是否是 B 邮箱地址发来的执行命令
3. 向 A 和 B 邮箱都发送 主题为:反馈 内容为:“目标计算机已收到指令!开始执行:xxx 指令!” 邮件
4. 执行指定邮箱发送的执行命令

远程人员操作:

登录 B 邮箱,向 A 邮箱发送 主题为:“目标计算机执行” 内容为:xxx指令(例如:关机)

1. 代码编写

import poplib
import smtplib
import os
import time
from email.parser import Parser
from email.header import decode_header
from email.utils import parseaddr
from email.mime.text import MIMEText
from email.header import Header

email_params = dict()
email_params['email_message'] = '反馈'
email_params['email_subject'] = '目标计算机反馈'
email_params['email_from'] = 'A邮箱'
email_params['email_user'] = 'A邮箱'
email_params['email_exec'] = 'B邮箱'
email_params['email_to'] = ['A邮箱', 'B邮箱']
email_params['email_smtp'] = 'smtp.163.com'
email_params['email_pop'] = 'pop.163.com'
email_params['email_pass'] = 'A邮箱的密码(smtp、pop3的密码)'
interval_time = 5

def decode_str(s):
  value, charset = decode_header(s)[0]
  if charset:
    value = value.decode(charset)
  return value

def get_headers(message):
  headers = dict()
  for header in ['From', 'To', 'Subject']:
    value = message.get(header, '')
    if value:
      if header == 'Subject':
        headers['Subject'] = decode_str(value)
      elif header == 'From':
        hdr, addr = parseaddr(value)
        headers['From'] = decode_str(addr)
      elif header == 'To':
        hdr, addr = parseaddr(value)
        headers['To'] = decode_str(addr)
  return headers

def guess_charset(message):
  charset = message.get_charset()
  if charset is None:
    content_type = message.get('Content-Type', '').lower()
    pos = content_type.find('charset=')
    if pos >= 0:
      charset = content_type[pos + 8:].strip()
  return charset

def get_content(message):
  for part in message.walk():
    content_type = part.get_content_type()
    charset = guess_charset(part)
    if content_type == 'text/plain' and charset:
      try:
        return part.get_payload(decode=True).decode(charset)
      except AttributeError:
        print('type error')
      except LookupError:
        print("unknown encoding: utf-8")

def receive_email():
  email_server = poplib.POP3_SSL(email_params['email_pop'])
  email_server.user(email_params['email_user'])
  email_server.pass_(email_params['email_pass'])
  resp, mails, octets = email_server.list()
  index = len(mails)
  if index == 0:
    return None, None
  resp, lines, octets = email_server.retr(index)
  message = b'\r\n'.join(lines).decode('utf-8', 'ignore')
  message = Parser().parsestr(message)
  email_server.quit()
  return get_headers(message), get_content(message)

def send_email(email_message):
  message = MIMEText(email_message, 'plain', 'utf-8')
  message['Subject'] = Header(email_params['email_subject'], 'utf-8')
  message['From'] = Header(email_params['email_from'])
  message['To'] = Header(','.join(email_params['email_to']), 'utf-8')

  email_server = smtplib.SMTP_SSL(email_params['email_smtp'])
  email_server.login(email_params['email_from'], email_params['email_pass'])
  email_server.sendmail(email_params['email_from'], email_params['email_to'], message.as_string())
  email_server.close()

def exec_operator(exec_content):
  if exec_content == '关机':
    os.system("shutdown -s -t 1")
  elif exec_content == '重启':
    os.system("shutdown -r")
  else:
    os.system(exec_content)

if __name__ == '__main__':
  while True:
    headers, content = receive_email()
    if headers and content and headers['From'] == email_params['email_exec'] and headers['Subject'] == '目标计算机执行':
      email_message = "目标计算机已接收到指令!开始执行: " + content + " 指令!"
      send_email(email_message)
      exec_operator(content)
    time.sleep(interval_time)

2. 解释说明

A 邮箱:是 163 邮箱,需要开启 smtp、pop3 服务

上面所说的 smtp、pop3 密码,指的是开启上图所示的服务要设定的密码!!!

B 邮箱:是 QQ 邮箱,只是用来发送执行命令到 A 邮箱的,所以不必开启 smtp、pop2 服务

3. 运行截图

B 邮箱向 A 邮箱发送命令 👇

B 邮箱从 A 邮箱接收到的反馈邮件 👇

至于关机的画面,就不展示了,大家自己运行后尝试看吧!(*^_^*)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • python实现远程控制电脑

    python远程控制电脑的具体代码,供大家参考,具体内容如下 ​ python拥有大量的第三方库,且语法简单.今天老杨就用python实现远程控制电脑 ​ 所谓,谋定而后动,在实现任何一个需求之前,我们需要先分析,捋清楚一个思路,远程控制电脑,无非就是接收远程的命令和根据命令去执行对应的操作.那这里,我们借助微信来接收命令,利用我们的一个itchat库实现远程控制电脑 ​ 按上所说,我们要完成需求,无非是把任务细分,首先,接收到消息指令,再根据对应的指令执行相对应的操作,其中我们需要考虑一个问题

  • python如何实现远程控制电脑(结合微信)

    不知道大家有没有这样一个烦恼,"自己的电脑总是被别人使用,又不好意思设置密码",所以利用python设计了一个程序来实现自由管控. 功能虽然简单,但大家可以通过其思路来实现更多的功能. 大致功能主要是两个部分, 一.电脑开机时,我的手机能收到通知. 二.可以通过手机发个特定的mail,就可以控制电脑关机. 第一个步骤:申请一个邮箱,使这个邮箱与你的手机号码绑定,然后你在这个邮箱中设定如果有新的邮件就发短信通知,这样开机时往这个邮箱发个mail,我手机就会收到短信通知了. 第二个步骤:通

  • python实现NB-IoT模块远程控制

    本来想尝试下如果不使用运营商网络应用平台情况下,只是在服务商服务器上是否可以实现对终端完全控制,如果这样可行,那么物联网应用服务端更有灵活性.实际情况下,很难实现和运营商网络对等的处理,用python代码原型确实能够实现参数的变化(如PSM,eDXR等),但是终端分配的IP地址毕竟属于接入网部分,更近似一个局域网,如果采用其他方式访问(如IMSI.IMEI等),还是需要与运营商核心网进行配合.以下是尝试远程控制的实现方法. 主要实现功能 1.使用python pyserial模块通过串口发送AT

  • python编写微信远程控制电脑的程序

    今天来分享一个"高大上"的技术--使用python编写一个可以用微信远程控制电脑的程序! 先来分析一下控制的具体流程: 我们使用微信给特定的邮箱发送一封邮件,其中包含了我们想要电脑执行的命令,然后电脑上的python程序获取到这封邮件,然后解析其中的命令,再交付给电脑执行.可以看出,这其中主要的技术难点就是获取邮件了!但是!这没有任何问题,大家看到我的上一篇博客<python 收发邮件>就可以了! 下面给出使用python收发邮件并执行邮件命令的代码. # -*- codi

  • python通过Windows下远程控制Linux系统

    一.学习目标 [通过Windows下远程控制Linux系统实现对socket模块认识] 二.实验环境 Windows下(模拟客户端 [ IP:192.168.43.87 ] ):python3.6 Linux下(模拟服务端 [ IP:192.168.43.226 ] ):python2.7 三.前提条件 两者能够ping通 服务端关闭防火墙,selinux 四.代码 服务端代码(server.py): #!/usr/bin/env python #coding:utf-8 import sock

  • Python3.4实现远程控制电脑开关机

    本文实例为大家分享了Python实现远程操控电脑的具体代码,供大家参考,具体内容如下 import poplib import sys import smtplib from email.mime.text import MIMEText import os from email.header import decode_header import email import time def check_email(): try: p = poplib.POP3('pop.163.com') p

  • python实现微信远程控制电脑

    首先,我们要先看看微信远程控制电脑的原理是什么呢? 我们可以利用Python的标准库控制本机电脑,然后要实现远程的话,我们可以把电子邮件作为远程控制的渠道,我们用Python自动登录邮箱检测邮件,当我们发送关机指令给这个邮箱的时候,若Python检测到相关的指令,那么Python直接发送本机的相关命令. 下面来分析一下该项目: 1.需求分析 1.范围:用Python开发一个远程操控电脑的项目. 2.总体要求: 2.1 总体功能要求:能够通过该软件远程控制该软件所在的电脑的重启或关机操作. 2.2

  • python简易远程控制单线程版

    本文实例为大家分享了python简易远程控制的具体代码,供大家参考,具体内容如下 1. 技术:管道通信,流文件处理,socket基础 2. Tips: 默认IP:127.0.0.1 默认端口:7676 3. 代码样例: 服务端: #!/usr/bin/env python # encoding: utf-8 import socket import sys from os import * reload(sys) sys.setdefaultencoding("utf-8") def

  • python的paramiko模块实现远程控制和传输示例

    本文介绍了python的paramiko模块实现远程控制和传输示例,分享给大家,具体如下: 1 安装 sudo pip install paramiko 2 ssh实现远程控制 #LINUX下执行shell ssh username@ip #输入密码后就可以对远程机器进行操作 ssh username@ip command #输入密码后远程机器就执行command ssh运行后,想退出,可以kill掉ssh进程. 3 paramiko实现ssh import paramiko hostname

  • Python 利用邮件系统完成远程控制电脑的实现(关机、重启等)

    0. 我们如何通过邮件系统完成远程控制电脑(关机.重启等)? 实现思路: 需要有两个邮箱:接收指令邮箱(A)发送指令邮箱(B) 被控制的电脑(查看 A 邮箱): 1. 每隔指定时间监听 A 邮箱 查看最近的邮件 2. 打开最近邮件,看是否是 B 邮箱地址发来的执行命令 3. 向 A 和 B 邮箱都发送 主题为:反馈 内容为:"目标计算机已收到指令!开始执行:xxx 指令!" 邮件 4. 执行指定邮箱发送的执行命令 远程人员操作: 登录 B 邮箱,向 A 邮箱发送 主题为:"目

  • python 通过邮件控制实现远程控制电脑操作

    0x00 思路 之前在博客上看到了使用python通过微信的接口,与微信交互的方式来控制电脑的摄像头.开关机等.但是这种方式需要首先在python上登录自己的微信才可以,同时微信端也会有已经在网页端登录的字样,很显眼.因此想到了另外一种交互方式,通过邮件进行交互. 通过邮件的方式不要求用户实时在线,只需要程序隔一段时间扫描一下邮箱的新邮件即可.这种交互方式更为方便.其次,这种方式也更为隐蔽,不会干扰微信的使用. 0x01 需要用到的库 主要是python的一些用于收发邮件的库 import sm

  • Python实现用手机监控远程控制电脑的方法

    一.前言 很多时候,我们都有远程控制电脑的需求.比如正在下载某样东西,需要让电脑在下载完后关机.或者你需要监控一个程序的运行状况等. 今天我们就来用Python实现一个远程监控并控制电脑的小程序. 二.实现原理 听起来远程控制电脑好像很高级的样子,但是实现起来其实非常简单.实现原理如下: 运行程序,让程序不停地读取邮件 用手机给电脑发送邮件 判断是否读取到指定主题的邮件,如果有,则获取邮件内容 根据邮件内容,执行预设的函数 与其说是学习如何远程控制电脑,还不如说是学习如何读取邮件.当然,上面的的

  • Python利用pywin32实现自动操作电脑

    目录 1. 简介 2. 示例代码 3. 效果图 4. 代码解释 5. 常见问题 1. 简介 在windows系统上,重复性的操作可以用Python脚本来完成,其中常用的模块是win32gui.win32con.win32api,要使用这三个模块需要先安装pywin32.在cmd中输入如下命令,即可安装pywin32: pip install pywin32 这三个模块作用如下: win32gui:模块定义了Windows下关于图形操作的API,如查找窗口句柄的函数FindWindow和FindW

  • python实现微信发送邮件关闭电脑功能

    Python 通过微信邮件实现电脑关机,供大家参考,具体内容如下 通过手机微信发送QQ邮件给sina邮箱,然后利用python的pop3定时检查sina邮箱的邮件主题以及邮件来源,并在电脑执行相应的命令行实现关机. Email_test[V1.0] import poplib import os import time from email.parser import Parser from email.header import decode_header from email.utils i

随机推荐