歡迎光臨
每天分享高質量文章

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 就可以了。

原始碼地址私信加小編QQ群:696541369即可免費獲取+python學習資料!

 

    贊(0)

    分享創造快樂