這里主要是針對ubuntu系統的說明
1.檢查計算機硬件是否支持WOL(wake on lan)功能。
1.1.檢查主板和電源是否支持WOL:
進入BIOS的Power Management Setup,設置PME Event Wake Up(這其實是一種Wake On PCI Card模式)為 Enabled。注意,有些機器可能為Wake On Lan或Wake On PCI Card。Wake On Lan模式可以在完全關機狀態下喚醒,而Wake On PCI Card模式要在深度休眠狀態下喚醒。造成這樣的區別主要是因為主板的設計不一樣,現在的計算機一般都是Wake On PCI Card模式的。
1.2.檢查網卡是否支持WOL。
安裝ethtool,並執行以下命令:
sudo apt-get install ethtool
sudo ethtool eth0 |grep Wake-on
如果顯示結果為下面這樣,就表示網卡支持WOL:
Supports Wake-on:pumbg
Wake-on : g
2.遠程控制計算機進入深度休眠或完全關機狀態
這里主要應用了SSH連接遠程計算機,並提交命令請求來達到目的。
2.1.使用ubuntu終端登陸遠程計算機
關於這一步可以參考ubuntu終端連接遠程計算機
2.2.登陸遠程計算機后,使用如下命令實現深度休眠或關機
深度休眠
sudo pm-hibernate
關機
sudo shutdown 0
3.喚醒遠程計算機
3.1.准備工作
知道遠程計算機的ip地址或域名和MAC地址,在路由上綁定局域網ip地址和MAC地址。如果沒有靜態ip,可以使用花生殼。詳細操作可以google,在這里就不詳述了。
在本地計算機上安裝遠程喚醒工具wakeonlan:
sudo apt-get install wakeonlan
3.2.喚醒遠程計算機
執行下面的命令就可以喚醒遠程的計算機了:
#host_address為遠程計算機的域名或ip地址,mac_address為遠程計算機的mac地址,mac地址是’:’間隔的形式 wakeonlan -i host_address mac_address
centos的情況
環境說明:
兩台局域網內的linux主機,本環境的系統為centos 5.3 X86_64
控制主機 為:192.168.10.149
被控制主機為:192.168.10.150
一,在控制主機上安裝遠程開機需要的 軟件
[root@tomcat2 ~]#yum -y install wol
或者安裝rpm包
[root@tomcat2 ~]#rpm -ivh wol-0.7.1-2.1.el3.dag.x86_64.rpm
二,開啟被控制主機的遠程網卡喚醒功能
第一步:登錄到被控制服務器192.168.10.150,用ethtool這個命令打印出網卡的信息
[root@tomcat1 ~]# ethtool eth0
clip_image002 可以看到,ethtool把網卡的信息全部列出,我們只關心其中的這兩項:
clip_image004
如果 wake-on 一項值為 d,表示禁用wake on lan
值為 g,表示啟用 wake on lan
第二步:用下面的命令來啟用wake on lan
[root@tomcat1 ~]# ethtool -s eth0 wol g
第三步:確認是否開啟了wake on lan功能
[root@tomcat1 ~]# ethtool eth0
clip_image006
clip_image008
OK,目標機器的網卡已經支持了遠程開機了
三. 獲取被控制主機的MAC地址
[root@tomcat1 ~]#ifconfig eth0
clip_image010 把clip_image012這一項記錄下來即可
四.關閉被控制主機 192.168.10.150的系統,然后再控制主機192.168.10.149上遠程開機
[root@tomcat2 ~]#wol 00:0C:29:5D:06:24
稍后就會發現,192.168.10.150已經啟動了
備注:
1,ethtool的 -s 參數是修改指定以太網設備的設置
2,wol的取值默認是d,含義是disable
修 改后的值為g,含義是Wake on MagicPacket(tm)
它還有幾個取值,分別是:
p Wake on phy activity
u Wake on unicast messages
m Wake on multicast messages
b Wake on broadcast messages
a Wake on ARP
3,當機器重啟后,eth0的設置又會回復到Wake-on: d 狀態,
這個問題怎么解決?
兩個辦法:第一個,也是我們的慣性思維;
把/sbin/ethtool -s eth0 wol g 這條命令附加到/etc/rc.local這個文件中,
則下次開機后會自動執行
第二個: 編輯/etc/sysconfig/network-scripts/ifcfg-eth0
(eth0網卡的配置文件),添加上一行:
ETHTOOL_OPTS=”wol g”
4,網絡喚醒的局限性:
它只能在局域網中應用,而不能通過互聯 網運行,為什么?
因為機器關閉后,完全是靠網卡喚醒機器,此時的機器是關閉的,沒有操作系統運行也就談不上支持tcp/ip協議,當然 也就不能通過互聯網運行了.也就是說:如果我們在某個局域網中只有一台機器,就不能使用此功能了.我們必須能登錄到局域網中的一台機器上,在此機器上運行 wake on lan 去喚醒目標機器前提條件就是:目標機器和我們登錄的機器在同一局域網中