远程唤醒_Python黑科技:在家远程遥控公司电脑,python+微信一键连接!
有時(shí)候需要遠(yuǎn)程家里的臺式機(jī)使用,因?yàn)槲移綍r(shí)都是用 MAC 多,但是遠(yuǎn)程喚醒只能針對局域網(wǎng),比較麻煩,于是我想用微信實(shí)現(xiàn)遠(yuǎn)程喚醒機(jī)器。
準(zhǔn)備工作
本程序主要是實(shí)現(xiàn)遠(yuǎn)程管理 Windows10操作系統(tǒng)的開機(jī)和關(guān)機(jī):
開機(jī)實(shí)現(xiàn)思路
首先通過微信發(fā)送開機(jī)指令,這里我使用的是 itchat 程序會調(diào)用 Paramiko 庫去 SSH 遠(yuǎn)程到內(nèi)網(wǎng)的樹莓派執(zhí)行 WakeOnLan 命令去喚醒 Windows 主機(jī)。
程序會通過 ICMP 協(xié)議, ping 下需要喚醒的目標(biāo)主機(jī)然后進(jìn)行過濾,一個(gè)正常的 ICMP 包是64字節(jié),過濾打印出這個(gè)64。
例如 ping 百度:
用一段 Linux 命令去過濾是否有64,這里為啥要用 head -n 1 呢?
因?yàn)橛锌赡軙霈F(xiàn)2行,經(jīng)過測試,我們只需要取64這個(gè)值就可以了:
如果有則表示開機(jī)成功已經(jīng)聯(lián)網(wǎng)了,返回開機(jī)成功,否則程序繼續(xù)往下走,去喚醒,然后在 ping 一次確認(rèn)是否開機(jī),如果為是則返回開機(jī)成功,否則返回失敗。程序執(zhí)行成功后,在我的網(wǎng)站根目錄創(chuàng)建一個(gè) shutdown 文件,用于后面的關(guān)機(jī)操作:
關(guān)機(jī)部分實(shí)現(xiàn)
當(dāng)接收關(guān)機(jī)指令時(shí),程序會去刪除網(wǎng)站根目錄的 shutdown 文件,客戶端我寫了幾行代碼,去通過 Requests 庫每隔30s 發(fā)送 HTTP head 請求去判斷文件是否是404,如果是404 這說明文件不存在,調(diào)用系統(tǒng)關(guān)機(jī)操作,執(zhí)行關(guān)機(jī)。
然后 SSH 到樹莓派去 ping 目標(biāo)主機(jī),如果返回為空,則說明關(guān)機(jī)成功,否則關(guān)機(jī)失敗。這只是針對 Windows 的關(guān)機(jī),如果目標(biāo)主機(jī)是 Linux 則簡單多了:
客戶端代碼,寫完扔計(jì)劃任務(wù),開機(jī)啟動:
使用 TeamViewer 連接:
缺點(diǎn)
總結(jié)
以上是生活随笔為你收集整理的远程唤醒_Python黑科技:在家远程遥控公司电脑,python+微信一键连接!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 要重复多少次变成潜意识_说了多少次了!通
- 下一篇: 高德地图显示多个气泡_CarPlay分屏