基於網路遠端開關機的原理與實踐

2021-06-19 07:55:48 字數 2097 閱讀 7271

計算機網路運維中,遠端關閉和啟動計算機是常見的任務。這可以通過開發專門的軟體來實現,但實際上大多數系統都自身就原生地擁有這些功能,本文在分析原理的基礎上,基於系統本身的功能詳細說明了基於網路的遠端開關機的步驟。

網路遠端開機,也被稱作wake on lan,其原理很簡單,就是計算機處於關閉狀態時,網絡卡仍然處於啟用狀態,可以接收來自網路的資料報,如果收到的資料報符合特定的格式,那麼就啟動機器。

這種資料報是具有特定格式的udp資料報,被稱為「魔術包」。udp埠不限,但很多實現都使用2034這個埠號。報文的載荷部分共102個位元組,每六個位元組為一組,這樣就分成了17個組。其中第1組為固定的0xff 0xff 0xff 0xff 0xff 0xff,第2-17組中的每個組都是遠端機器網絡卡的mac位址。

由於遠端網絡卡雖然處於活動狀態,但並沒有網路協議棧的軟體功能,所以也就不存在ip位址的概念,所以「魔術包」通常是udp廣播包,因為udp廣播包會使用對應的乙太網廣播包傳送。

由於「魔術包」具有非常簡單的格式,所以編寫遠端開機的軟體也就非常容易,網上也可以找到很多現成的軟體,而且大多數是免費的。

需要注意的是,機器自身的主機板和網絡卡必須支援遠端開機才行,2023年以後的機器大多數都支援這個功能,只是為了安全起見預設可能並沒有開啟。這就需要在bios裡啟用這項功能。不同的bios系統,啟用的方式也不相同,一般都處於電源和啟動的配置項中。

遠端關機的原理也非常簡單,系統本身都具有關機功能,遠端關機只不過是使用者通過網路登入系統然後執行關機命令而已。

不同的系統具有不同的關機命令。常用的系統可以分為兩類,一類是微軟的windows系列,另一類就是龐大的類unix系統,包括但不限於unix,linux,macos。下面分別對其進行說明。

windows系統支援通過net use 命令來遠端登入系統,登陸後也就可以執行關機命令了。我們這裡介紹的是不需要登入直接執行關機命令的方法。

windows系統提供了遠端關機的命令shutdown。具體格式如下:

shutdown  –s  –m  \\目標機器ip  -t  提示秒數

這個命令的功能是,使用guest賬戶登入目標機器,執行關機命令,在目標機器彈出關機提示視窗,「提示秒數」變為0時關閉機器。

經過測試,在大多數系統上執行上述命令都不會成功,很多情況下報錯:拒絕訪問(5)。原因就是guest賬戶問題。經過反覆測試,採用如下三個步驟後大多數系統都可以正常遠端關機了。(注:該步驟在windowsxpsp3和windows8系統上測試通過,這裡步驟以xp說明)

(1)啟用guest賬戶

遠端關機使用的是guest賬戶,所以首先需要啟用這個賬戶。啟用步驟如下:

右鍵單擊「我的電腦」,選擇「管理」,進入「計算機管理」控制台。

確保「賬戶已停用」處於不選狀態。

(2)允許guest使用者從網路訪問這台計算機

這需要把guest使用者從「拒絕從網路訪問這台計算機」的組中刪除。詳細步驟截圖如下:

(3)允許guest賬戶從遠端系統強制關機

這需要把guest使用者加入「從遠端系統強制關機」的組中。步驟截圖如下:

這類系統都支援ssh遠端登入,登陸後執行poweroff命令就可以完成關機。我們需要做的就是啟用遠端登入功能。

Python 遠端開關機的方法

用 python 關機你肯定聽過或者實踐過,那麼用 python 開機呢?這是乙個神奇的方法,教你如何用 python 來開機。github 倉庫位址 本文目標 python 開機 關於用程式來開機,是怎麼做到的呢?這就是 wol 技術 wake on lan,利用計算機在關機或休眠狀態時,網絡卡及...

利用uefi進行遠端開關機

關機模式下,bios的電源管理選單下有remote wake up或wake on lan等類似選項的電腦才支援遠端開機,若無此選項則不支援遠端開機。假如remote wake up開啟後不支援遠端開機,請諮詢硬體提供商 通常到 power managment 電源管理 下尋找如下列選項 boot ...

Windows XP自動開關機的實現

今天有這麼乙個想法,想讓自己的電腦,可以在我不在的時候也能每天定時開機和關機 呵呵!你是不是也有這個想法呢,特別是做個人伺服器的朋友,有了這個想法,就要想怎麼實現啦!我喜歡簡單。所以我決定向大家,介紹這種方法啦。1.自動開機。這個有個條件,就是你的主機板要支援才行,哦,可能你已經明白,用什麼方法啦!...