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

63 篇文章 1 订阅

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

今天我们就来用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()  

文章来源:网络 版权归原作者所有

上文内容不用于商业目的,如涉及知识产权问题,请权利人联系小编,我们将立即处理

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值