遠端喚醒WOL啟動伺服器或電腦

2022-04-11 09:20:19 字數 1928 閱讀 5639

因為新型肺炎的原因,交通受阻,無法去公司上班,只能在家遠端工作,但是放假前伺服器全關掉了,現在也沒人去開,然後群裡有人說伺服器是支援遠端喚醒的,可以遠端啟動,於是啟動了部分伺服器,但是對於不支援遠端喚醒的伺服器還是沒辦法。藉此機會總結一下wol技術的原理和操作方法。

其實是網路喚醒,即wake-on-lan,通俗的講成了遠端喚醒。wol可以實現通過網路啟動的主要原因就是來自於網絡卡對wol的支援。除此外,還有wol的擴充套件wake-on-wireless-lan(wowlan),即通過無線網絡卡來喚醒電腦,同樣的也需要無線網絡卡的支援。不過目前來說,似乎大部分機器都無法直接通過無線網絡卡來喚醒。

wol的原理是:通過向網絡卡傳送乙個特定格式的資料報,網絡卡識別到這個資料報之後,配合硬體等裝置來啟動電腦或者伺服器。雖然電腦或伺服器關機了,但是如果是支援wol的網絡卡,則網絡卡仍然是通電的,所以仍然能夠接受來自區域網路內的資料報。

特定的資料報稱為喚醒魔包(wake on magic packet),其資料格式如下:

ff ff ff ff ff ff mac位址x16 密碼段

前6個位元組固定ff,後面跟網絡卡的實體地址重複16次,最後是4-6位元組的密碼段

將這個16進製制的資料轉換為二進位制後,封裝為udp格式,然後傳送到網路中,網絡卡接收到資料後進行處理,若為自己的mac位址,則觸發開機。

import socket

from binascii import a2b_hex

if __name__ ==

'__main__'

: addr =

'192.168.0.255'

port =

9 udp = socket.socket(socket.af_inet, socket.sock_dgram)

package =

'ffffffffffff'

for i in

range(0

,16,1

):# 網絡卡位址

package +=

'b888e330d465'

package +=

'000000000000'

udp.sendto(a2b_hex(package)

,(addr, port)

)

public

static

void

main

(string[

] args)

data.

("000000000000");

byte

bytes = hex.

decodehex

(data.

tostring()

);datagramsocket datagramsocket =

newdatagramsocket()

; datagrampacket packet =

newdatagrampacket

(bytes, bytes.length, inetaddress, port)

; datagramsocket.

send

(packet);}

catch

(decoderexception

| ioexception e)

}

身邊沒有伺服器,而且只帶了個華為的小本本回來,所以沒辦法用這個筆記本測試,於是就拿出了8年前買的聯想的thinkpad來測試。它網絡卡是支援wol的。

關機狀態無法喚醒,很可能是硬體問題導致的;

睡眠狀態下可以成功喚醒。

ipconfig/all

個人電腦如何搭建伺服器?或遠端連線

先來介紹下我自己的情況 1。我所進行實驗的環境是在我們學校的校園網中。當然我所介紹的不僅僅適用於校園網,相反地,一般的家庭寬頻相對校園網來說更加容易設定。2。我們學校是動態分配ip位址的,所以分到我們宿舍埠裡的ip位址是動態的,不是固定的。3。我的電腦是處在我們宿舍的路由器下的,我們宿舍的路由器也是...

如何重啟或關閉遠端伺服器

1 建議遠端連線。把遠端機器ip換成實際ip位址,把密碼改為administrator的真實密碼 net use 遠端機器ip ipc 密碼 user administrator 2 執行重啟命令 shutdown r f t 1 m 遠端機器ip 3 執行關機命令 shutdown s f t 1...

個人電腦連線遠端伺服器點滴

ssh配置遠端登入別名 cd ssh 在config檔案中 新增這句話 remote server config host pit 別名 hostname 123.207.170.77 user root identitiesonly yes 預設檔案操作 將本地檔案上傳到遠端伺服器上 scp de...