Python黑科技:在家遠程遙控公司電腦,python+微信一鍵連接!


 

有時候需要遠程家里的台式機使用,因為我平時都是用 MAC 多,但是遠程喚醒只能針對局域網,比較麻煩,於是我想用微信實現遠程喚醒機器。

准備工作

 

本程序主要是實現遠程管理 Windows10操作系統的開機和關機:

  1. 在 Windows機器的相同內網中放一個 Linux 主機,我這里用樹莓派代替,如果你是用 OpenWrt 之類的路由器也可以。

  2. Linux 主機需要能夠遠程訪問,我這里是有 FRP 將樹莓派的端口映射到我的公網 Linux 主機上。所以可以隨時遠程 SSH 過去。

  3. 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 連接:

 

 

 

缺點

 

  1. 網頁端微信必須一直登錄,不方便,這個就需要微信不能斷網了。

  2. WakeOnLan 是廣播 MAC 地址的,貌似不能返回是否成功沒,所以還是要 ping 主機看看通不通,判斷下。

  3. 需要一個樹莓派做跳板機,否則也不能喚醒內網設備。

  4. 如果只允許自己控制最好是使用文件助手來發送消息,因為默認情況下,任何人都可以給你發送指令開機。

  5. Windows需要安裝TeamViewer並且設置為開機自動啟動以及綁定賬號設置無人值守模式。這樣方便遠程,如果是Linux 則不需要開啟 ssh 就可以了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM