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

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)

    分享創造快樂