在家想远程公司电脑?Python+微信一键连接!.docx
《在家想远程公司电脑?Python+微信一键连接!.docx》由会员分享,可在线阅读,更多相关《在家想远程公司电脑?Python+微信一键连接!.docx(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、在家想远程公司电脑?Python+微信一键连接!|阿文责编|伍杏玲有时候需要远程家里的台式机使用因为我平时都是用MAC多但是远程唤醒只能针对局域网比拟费事于是我想用微信实现远程唤醒机器。准备工作本程序主要是实现远程管理Windows10操作系统的开机以及关机在Windows机器的一样内网中放一个Linux主机我这里用树莓派代替假如你是用OpenWrt之类的路由器可以以。Linux主机需要可以远程访问我这里是有FRP将树莓派的端口映射到我的公网Linux主机上。所以可以随时远程SSH过去。Windows机器的网卡必须是有线连接支持网络唤醒功能。开机实现思路首先通过微信发送开机指令这里我使用的是i
2、tchat程序会调用Paramiko库去SSH远程到内网的树莓派执行WakeOnLan命令去唤醒Windows主机。piraspberrypi:$wakeonlan-i192.168.1.014:dd:a9:ea:0b:96Sendingmagicpacketto192.168.1.0:9with14:dd:a9:ea:0b:96程序会通过ICMP协议ping下需要唤醒的目的主机然后进展过滤一个正常的ICMP包是64字节过滤打印出这个64。例如ping百度pingbaiduPINGa.shifen(180.97.33.108):56databytes64bytesfrom180.97.33.1
3、08:icmp_seq0ttl53time8.865ms64bytesfrom180.97.33.108:icmp_seq1ttl53time9.206ms64bytesfrom180.97.33.108:icmp_seq2ttl53time8.246ms用一段Linux命令去过滤是否有64这里为啥要用head-n1呢因为有可能会出现2行经过测试我们只需要取64这个值就可以了ping192.168.1.182-c1|grep64|cut-d-f1|head-n1假如有那么表示开机成功已经联网了返回开机成功否那么程序继续往下走去唤醒然后在ping一次确认是否开机假如为是那么返回开机成功否那么返回
4、失败。程序执行成功后在我的网站根目录创立一个shutdown文件用于后面的关机操作#!/usr/bin/python#-*-coding:utf-8-*-importitchatimportparamikoimportosimporttimeimportsysreload(sys)sys.setdefaultencoding(utf-8)hostnameusernameportkey_file/home/fangwenjun/.ssh/id_rsafilename/home/fangwenjun/.ssh/known_hostsitchat.msg_register(itchat.conten
5、t.TEXT)deftext_reply(msg):ifmsgToUserName!filehelper:returnifmsgTextu开机:paramiko.util.log_to_file(ssh_key-login.log)privatekeyos.path.expanduser(key_file)try:keyparamiko.RSAKey.from_private_key_file(privatekey)exceptparamiko.PasswordRequiredException:keyparamiko.RSAKey.from_private_key_file(privatek
6、ey,key_file_pwd)sshparamiko.SSHClient()ssh.load_system_host_keys(filenamefilename)ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()ssh.connect(hostnamehostname,usernameusername,pkeykey,portport)#执行唤醒命令stdin,stdout,stderrssh.exec_command(ping192.168.1.182-c1|grep64|cut-d-f1|head-n1)sshCheckOpe
7、nstdout.read()sshCheckOpensshCheckOpen.strip(n)printtype(sshCheckOpen)printsshCheckOpen#进展判断假如为64那么讲明ping成功讲明设备已经在开机状态程序完毕否那么执行唤醒ifsshCheckOpen64:connect_ok_timetime.strftime(%Y-%m-%d%H:%M:%S,time.localtime()itchat.send(connect_ok_timeu设备已经开机,toUserNamefilehelper)else:ssh_timetime.strftime(%Y-%m-%d%
8、H:%M:%S,time.localtime()itchat.send(ssh_timeu开场连接远程主机,toUserNamefilehelper)stdin,stdout,stderrssh.exec_command(wakeonlan-i192.168.1.014:dd:a9:ea:0b:96)wakeonlan_timetime.strftime(%Y-%m-%d%H:%M:%S,time.localtime()itchat.send(wakeonlan_timeu执行唤醒等待设备开机联网,toUserNamefilehelper)#由于开机需要一些时间去启动网络所以这里等等60sti
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 在家 远程 公司 电脑 Python 微信一键 连接
限制150内