Python开发学习之Python实现用手机监控远程控制电脑
小职 2021-05-27 来源 :Python编程 阅读 551 评论 0

摘要:本文主要介绍了Python开发学习之Python实现用手机监控远程控制电脑,通过具体的内容向大家展现,希望对大家Python的学习有所帮助。

本文主要介绍了Python开发学习之Python实现用手机监控远程控制电脑,通过具体的内容向大家展现,希望对大家Python的学习有所帮助。

Python开发学习之Python实现用手机监控远程控制电脑

一、前言

很多时候,我们都有远程控制电脑的需求。比如正在下载某样东西,需要让电脑在下载完后关机。或者你需要监控一个程序的运行状况等。

 

今天我们就来用Python实现一个远程监控并控制电脑的小程序。

 

二、实现原理

听起来远程控制电脑好像很高级的样子,但是实现起来其实非常简单。实现原理如下:

 

运行程序,让程序不停地读取邮件

 

用手机给电脑发送邮件

 

判断是否读取到指定主题的邮件,如果有,则获取邮件内容

 

根据邮件内容,执行预设的函数

 

与其说是学习如何远程控制电脑,还不如说是学习如何读取邮件。当然,上面的的流程只实现了远程控制电脑,而没实现对电脑的监控。而监控的操作可以以截图的方式来进行。

 

我们可以预设一个指令,当读取到邮件内容为grab时,我们就发送电脑截图。如何将电脑截图发送给手机邮箱,这样就达到了监控的效果。

 

关于如何发送邮件可以参考博客:如何用Python发送邮件?。这里就不再详细说了。下面我们看看如何读取邮件。

 

三、读取邮件

读取邮件需要使用到imbox模块,安装语句如下:

 

pip install imbox

读取邮件的代码如下:

 

from imbox import Imbox  

def read_mail(username, password):  

    with Imbox('imap.163.com', username, password, ssl=True) as box:  

        all_msg = box.messages(unread=True)  

        for uid, message in all_msg:  

            # 如果是手机端发来的远程控制邮件  

            if message.subject == 'Remote Control':  

                # 标记为已读  

                box.mark_seen(uid)  

                return message.body['plain'][0]

首先我们用with语句,打开邮箱。然后通过下面语句获取所有的未读邮件:

 

all_msg = box.messages(unread=True)

获取未读邮件后,对邮件进行遍历。将主题为“Reomte Control”的邮件标记为已读,并返回文本内容。

 

这里需要注意,因为我们筛选出了主题为“Remote Control”的邮件,因此我们在用手机发邮件的时候需要将主题设置为“Remote Control”,这样可以避免其它邮件的干扰。

 

四、截图

截图需要使用到PIL模块,安装如下:

 

pip install pillow

截图的代码很简单:

 

from PIL import ImageGrab  

def grab(sender, to):  

    # 截取电脑全屏  

    surface = ImageGrab.grab()  

    # 将截屏保存为surface.jpg  

    surface.save('surface.jpg')  

    # 将截屏发送给手机  

    send_mail(sender, to, ['surface.jpg'])

其中send_mail的代码如下:

 

import yagmail  

def send_mail(sender, to, contents):  

    smtp = yagmail.SMTP(user=sender, host='smtp.163.com')  

    smtp.send(to, subject='Remote Control', contentscontents=contents)

关于发送邮件的介绍可以参考上面提到的博客。

 

五、关机

关机的操作非常简单,我们可以用python来执行命令行语句即可。代码如下:

 

import os  

def shutdown():  

 # 关机  

    os.system('shutdown -s -t 0')

除了关机,我们还可以执行很多操作。对于一些复杂的操作,我们可以预编写一些bat文件,这里就不演示了。

 

六、完整代码

上面我们编写了各个部分的代码,然后再来看看主体部分的代码:

 

def main():  

 # 电脑用来发送邮件已经电脑读取的邮箱  

    username = 'sockwz@163.com'  

    password = '********'   

 # 手机端的邮箱  

    receiver = '2930777518@qq.com'   

 # 读取邮件的时间间隔  

    time_space = 5   

 # 注册账户  

    yagmail.register(username, password)     

    # 循环读取  

    while True:  

        # 读取未读邮件  

        msg = read_mail(username, password)  

        if msg:  

         # 根据不同的内容执行不同操作  

            if msg == 'shutdown':  

                shutdown()

            elif msg == 'grab':  

                grab(username, receiver)  

        time.sleep(time_space)

其中:

 

yagmail.register(username, password)

会使用到keyring模块,安装如下:

 

pip install keyring

后面我们可以根据自己的需求编写一些其它功能。下面是完整的代码:

 

import os  

import time  

import yagmail  

from imbox import Imbox  

from PIL import ImageGrab  

def send_mail(sender, to, contents):  

    smtp = yagmail.SMTP(user=sender, host='smtp.163.com')  

    smtp.send(to, subject='Remote Control', contentscontents=contents)  

def read_mail(username, password):  

    with Imbox('imap.163.com', username, password, ssl=True) as box:  

        all_msg = box.messages(unread=True)  

        for uid, message in all_msg:  

            # 如果是手机端发来的远程控制邮件  

            if message.subject == 'Remote Control':

                 # 标记为已读  

                box.mark_seen(uid)  

                return message.body['plain'][0]  

def shutdown():  

    os.system('shutdown -s -t 0')  

def grab(sender, to):  

    surface = ImageGrab.grab()  

    surface.save('surface.jpg')  

    send_mail(sender, to, ['surface.jpg'])  

def main():  

    username = 'sockwz@163.com'  

    password = '你的授权码'  

    receiver = '2930777518@qq.com'

    time_space = 5  

    yagmail.register(username, password)  

    while True:  

        # 读取未读邮件  

        msg = read_mail(username, password)  

        if msg:  

            if msg == 'shutdown':  

                shutdown()  

            elif msg == 'grab':  

                grab(username, receiver)  

        time.sleep(time_space)  

if __name__ == '__main__':  

    main()  



我是小职,记得找我

✅ 解锁高薪工作

✅ 免费获取基础课程·答疑解惑·职业测评

Python开发学习之Python实现用手机监控远程控制电脑

本文由 @小职 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程