嵌入式开发交流网论坛

标题: 远程遥控电脑?通过微信就可以!Python带你实现远程连接 [打印本页]

作者: 可乐可以的可乐    时间: 2020-5-12 13:44
标题: 远程遥控电脑?通过微信就可以!Python带你实现远程连接
准备工作
本程序主要是实现远程管理 Windows10操作系统的开机和关机:
开机实现思路
首先通过微信发送开机指令,这里我使用的是 itchat 程序会调用 Paramiko 库去 SSH 远程到内网的树莓派执行 WakeOnLan 命令去唤醒 Windows 主机。


程序会通过 ICMP 协议, ping 下需要唤醒的目标主机然后进行过滤,一个正常的 ICMP 包是64字节,过滤打印出这个64。
例如 ping 百度:
[attach]43178[/attach]

用一段 Linux 命令去过滤是否有64,这里为啥要用 head -n 1 呢?
因为有可能会出现2行,经过测试,我们只需要取64这个值就可以了:


如果有则表示开机成功已经联网了,返回开机成功,否则程序继续往下走,去唤醒,然后在 ping 一次确认是否开机,如果为是则返回开机成功,否则返回失败。程序执行成功后,在我的网站根目录创建一个 shutdown 文件,用于后面的关机操作:
[attach]43179[/attach]

[attach]43180[/attach]

关机部分实现
当接收关机指令时,程序会去删除网站根目录的 shutdown 文件,客户端我写了几行代码,去通过 Requests 库每隔30s 发送 HTTP head 请求去判断文件是否是404,如果是404 这说明文件不存在,调用系统关机操作,执行关机。
然后 SSH 到树莓派去 ping 目标主机,如果返回为空,则说明关机成功,否则关机失败。这只是针对 Windows 的关机,如果目标主机是 Linux 则简单多了:
[attach]43181[/attach]

[attach]43182[/attach]

客户端代码,写完扔计划任务,开机启动:
[attach]43183[/attach]

使用 TeamViewer 连接:
[attach]43184[/attach]

缺点





欢迎光临 嵌入式开发交流网论坛 (http://www.dianzixuexi.com/bbs/) Powered by Discuz! X3.2