千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:成都千锋IT培训  >  技术干货  >  如何让Python实现远程控制电脑

如何让Python实现远程控制电脑

来源:千锋教育
发布人:xqq
时间: 2023-11-06 13:26:08

一、前言

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

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

二、实现原理

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

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

2.用手机给电脑发送邮件。

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

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

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

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

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

三、读取邮件

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

pipinstallimbox

读取邮件的代码如下:

fromimboximportImbox

defread_mail(username,password):

withImbox('imap.163.com',username,password,ssl=True)asbox:

all_msg=box.messages(unread=True)

foruid,messageinall_msg:

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

ifmessage.subject=='RemoteControl':

#标记为已读

box.mark_seen(uid)

returnmessage.body['plain'][0]

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

all_msg=box.messages(unread=True)

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

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

四、截图

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

pipinstallpillow

截图的代码很简单:

fromPILimportImageGrab

defgrab(sender,to):

#截取电脑全屏

surface=ImageGrab.grab()

#将截屏保存为surface.jpg

surface.save('surface.jpg')

#将截屏发送给手机

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

其中send_mail的代码如下:

importyagmail

defsend_mail(sender,to,contents):

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

smtp.send(to,subject='RemoteControl',contents=contents)

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

五、关机

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

importos

defshutdown():

#关机

os.system('shutdown-s-t0')

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

六、完整代码

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

defmain():

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

username='sockwz@163.com'

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

#手机端的邮箱

receiver='2930777518@qq.com'

#读取邮件的时间间隔

time_space=5

#注册账户

yagmail.register(username,password)

#循环读取

whileTrue:

#读取未读邮件

msg=read_mail(username,password)

ifmsg:

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

ifmsg=='shutdown':

shutdown()

elifmsg=='grab':

grab(username,receiver)

time.sleep(time_space)

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

importos

importtime

importyagmail

fromimboximportImbox

fromPILimportImageGrab

defsend_mail(sender,to,contents):

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

smtp.send(to,subject='RemoteControl',contents=contents)

defread_mail(username,password):

withImbox('imap.163.com',username,password,ssl=True)asbox:

all_msg=box.messages(unread=True)

foruid,messageinall_msg:

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

ifmessage.subject=='RemoteControl':

#标记为已读

box.mark_seen(uid)

returnmessage.body['plain'][0]

defshutdown():

os.system('shutdown-s-t0')

defgrab(sender,to):

surface=ImageGrab.grab()

surface.save('surface.jpg')

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

defmain():

username='sockwz@163.com'

password='你的授权码'

receiver='2930777518@qq.com'

time_space=5

yagmail.register(username,password)

whileTrue:

#读取未读邮件

msg=read_mail(username,password)

ifmsg:

ifmsg=='shutdown':

shutdown()

elifmsg=='grab':

grab(username,receiver)

time.sleep(time_space)

if__name__=='__main__':

main()

以上内容为大家介绍了如何让Python实现远程控制电脑,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注IT培训机构:千锋教育。http://www.mobiletrain.org/

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

python delattr函数如何使用?

2023-11-10

python time.strptime的格式化

2023-11-10

pythonGIL在Python多线程的应用

2023-11-10

最新文章NEW

python中pdb模块怎么用?

2023-11-10

Python如何截图保存?

2023-11-10

python​中缺少module怎么办?

2023-11-10

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>