关闭
搜索
搜索
本版
帖子
用户
热搜:
程序员
简洁模式
高级模式
用户组: 游客
消息
提醒
新听众
我关注的
帖子
道具
勋章
任务
设置
退出
请
登录
后使用快捷导航
没有帐号?
立即注册
设为首页
收藏本站
开启辅助访问
切换到窄版
登录
or
立即注册
快捷导航
搜索
首页
论坛
BBS
MCU单片机技术
程序员交流
远程遥控电脑?通过微信就可以!Python带你实现远程连接
[复制链接]
作者:
可乐可以的可乐
版块:
›
嵌入式操作系统
›
linux
发布时间:
2020-5-12 13:44:49
1399
0
返回列表
可乐可以的可乐
当前离线
中级会员
中级会员, 积分 310, 距离下一级还需 190 积分
中级会员
中级会员, 积分 310, 距离下一级还需 190 积分
积分
310
发消息
楼主
电梯直达
可乐可以的可乐
发表于 2020-5-12 13:44:49
|
只看该作者
|
倒序浏览
|
阅读模式
准备工作
本程序主要是实现远程管理 Windows10操作系统的开机和关机:
在 Windows机器的相同内网中放一个 Linux 主机,我这里用树莓派代替,如果你是用 OpenWrt 之类的路由器也可以。
Linux 主机需要能够远程访问,我这里是有 FRP 将树莓派的端口映射到我的公网 Linux 主机上。所以可以随时远程 SSH 过去。
Windows 机器的网卡必须是有线连接,支持网络唤醒功能。
开机实现思路
首先通过微信发送开机指令,这里我使用的是 itchat 程序会调用 Paramiko 库去 SSH 远程到内网的树莓派执行 WakeOnLan 命令去唤醒 Windows 主机。
程序会通过 ICMP 协议, ping 下需要唤醒的目标主机然后进行过滤,一个正常的 ICMP 包是64字节,过滤打印出这个64。
例如 ping 百度:
用一段 Linux 命令去过滤是否有64,这里为啥要用 head -n 1 呢?
因为有可能会出现2行,经过测试,我们只需要取64这个值就可以了:
如果有则表示开机成功已经联网了,返回开机成功,否则程序继续往下走,去唤醒,然后在 ping 一次确认是否开机,如果为是则返回开机成功,否则返回失败。程序执行成功后,在我的网站根目录创建一个 shutdown 文件,用于后面的关机操作:
关机部分实现
当接收关机指令时,程序会去删除网站根目录的 shutdown 文件,客户端我写了几行代码,去通过 Requests 库每隔30s 发送 HTTP head 请求去判断文件是否是404,如果是404 这说明文件不存在,调用系统关机操作,执行关机。
然后 SSH 到树莓派去 ping 目标主机,如果返回为空,则说明关机成功,否则关机失败。这只是针对 Windows 的关机,如果目标主机是 Linux 则简单多了:
客户端代码,写完扔计划任务,开机启动:
使用 TeamViewer 连接:
缺点
网页端微信必须一直登录,不方便,这个就需要微信不能断网了。
WakeOnLan 是广播 MAC 地址的,貌似不能返回是否成功没,所以还是要 ping 主机看看通不通,判断下。
需要一个树莓派做跳板机,否则也不能唤醒内网设备。
如果只允许自己控制最好是使用文件助手来发送消息,因为默认情况下,任何人都可以给你发送指令开机。
Windows需要安装TeamViewer并且设置为开机自动启动以及绑定账号设置无人值守模式。这样方便远程,如果是Linux 则不需要开启 ssh 就可以了。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有帐号?
立即注册
收藏
0
相关帖子
•
Linux-3.3Linux运行机制关机详解(连载)
•
Linux系统与Windows系统哪个好呢(二)
•
开源开发者为任天堂主机带来了新的Linux内核移植
•
用命令,Windows与Linux系统关机的几种方式
•
网站服务器选择windows主机好还是linux主机好
•
ZStack实践汇|ZStack云平台应用Linux系统UserData教程
•
什么是美国Linux主机,真的需要吗?
•
Kali与Shell编程--关机和重启操作
•
虚拟主机可以换系统吗
•
Linux网络配置笔记
回复
使用道具
举报
返回列表
高级模式
B
Color
Image
Link
Quote
Code
表情
@朋友
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
浏览过的版块
ARM
快速回复
返回顶部
返回列表