Python黑科技:在家遠程遙控公司電腦,python+微信一鍵連接!
有時候需要遠程家里的臺式機使用,因為我平時都是用 MAC 多,但是遠程喚醒只能針對局域網,比較麻煩,于是我想用微信實現遠程喚醒機器。
準備工作
本程序主要是實現遠程管理 Windows10操作系統的開機和關機:
- 在 Windows機器的相同內網中放一個 Linux 主機,我這里用樹莓派代替,如果你是用 OpenWrt 之類的路由器也可以。
- Linux 主機需要能夠遠程訪問,我這里是有 FRP 將樹莓派的端口映射到我的公網 Linux 主機上。所以可以隨時遠程 SSH 過去。
- Windows 機器的網卡必須是有線連接,支持網絡喚醒功能。
開機實現思路
首先通過微信發送開機指令,這里我使用的是 itchat 程序會調用 Paramiko 庫去 SSH 遠程到內網的樹莓派執行 WakeOnLan 命令去喚醒 Windows 主機。
Python黑科技:在家遠程遙控公司電腦,python+微信一鍵連接!
程序會通過 ICMP 協議, ping 下需要喚醒的目標主機然后進行過濾,一個正常的 ICMP 包是64字節,過濾打印出這個64。
例如 ping 百度:
Python黑科技:在家遠程遙控公司電腦,python+微信一鍵連接!
用一段 Linux 命令去過濾是否有64,這里為啥要用 head -n 1 呢?
因為有可能會出現2行,經過測試,我們只需要取64這個值就可以了:
Python黑科技:在家遠程遙控公司電腦,python+微信一鍵連接!
如果有則表示開機成功已經聯網了,返回開機成功,否則程序繼續往下走,去喚醒,然后在 ping 一次確認是否開機,如果為是則返回開機成功,否則返回失敗。程序執行成功后,在我的網站根目錄創建一個 shutdown 文件,用于后面的關機操作:
Python黑科技:在家遠程遙控公司電腦,python+微信一鍵連接!
Python黑科技:在家遠程遙控公司電腦,python+微信一鍵連接!
關機部分實現
當接收關機指令時,程序會去刪除網站根目錄的 shutdown 文件,客戶端我寫了幾行代碼,去通過 Requests 庫每隔30s 發送 HTTP head 請求去判斷文件是否是404,如果是404 這說明文件不存在,調用系統關機操作,執行關機。
然后 SSH 到樹莓派去 ping 目標主機,如果返回為空,則說明關機成功,否則關機失敗。這只是針對 Windows 的關機,如果目標主機是 Linux 則簡單多了:
Python黑科技:在家遠程遙控公司電腦,python+微信一鍵連接!
Python黑科技:在家遠程遙控公司電腦,python+微信一鍵連接!
客戶端代碼,寫完扔計劃任務,開機啟動:
Python黑科技:在家遠程遙控公司電腦,python+微信一鍵連接!
使用 TeamViewer 連接:
Python黑科技:在家遠程遙控公司電腦,python+微信一鍵連接!
缺點
- 網頁端微信必須一直登錄,不方便,這個就需要微信不能斷網了。
- WakeOnLan 是廣播 MAC 地址的,貌似不能返回是否成功沒,所以還是要 ping 主機看看通不通,判斷下。
- 需要一個樹莓派做跳板機,否則也不能喚醒內網設備。
- 如果只允許自己控制最好是使用文件助手來發送消息,因為默認情況下,任何人都可以給你發送指令開機。
- Windows需要安裝TeamViewer并且設置為開機自動啟動以及綁定賬號設置無人值守模式。這樣方便遠程,如果是Linux 則不需要開啟 ssh 就可以了。
源代碼地址加群:700341555即可免費獲取+python學習資料!
Python黑科技:在家遠程遙控公司電腦,python+微信一鍵連接!