Ubuntuでwake-on-lanを有効化する

スポンサード リンク

遠隔操作でPCの電源を入れる技術に,wake on lanがある。 これができるとコマンド一発で電源を入れられるので非常に楽だ。

UbuntuのサーバをWake on Lanで動くように設定したのでメモしておく。

1. BIOS設定

BIOSの設定の中でWake on Lanを有効化する。

2. ubuntuの設定

パッケージインストール

$ sudo apt install ethtool

wake on lan を使いたいNICの設定を確認する。 Wake-on: d となっていればWake on lanが無効化されている証拠。

$ sudo ethtool enp4s0 | grep Wake-on:
        Supports Wake-on: pumbg
        Wake-on: d

有効化するコマンドを打つ。

$ sudo ethtool -s enp4s0 wol g

再度確認してみる。 Wake-on: g となっていればOK。

$ sudo ethtool enp4s0 | grep Wake-on:
        Supports Wake-on: pumbg
        Wake-on: g

3. 再起動時に自動設定

sudo ethtool -s enp4s0 wol g だけでは,再起動後にまた無効化されてしまう。 毎回手でコマンドを打つのは面倒なので,Ubuntuの起動時に自動実行されるスクリプトに仕込んでおく。

$ sudo sh -c "echo '#!/bin/bash
ethtool -s enp4s0 wol g
exit' > /etc/init.d/wakeonlan"

$ sudo chmod +x /etc/init.d/wakeonlan
$ sudo update-rc.d -f wakeonlan defaults

4. Wake on Lanによる起動テスト

まずはMACアドレスを確認する。

$ ifconfig enp4s0 | awk 'NR==1 {print $5}'
11:22:33:44:55:66

そして電源を落とす。

$ sudo shutdown -h now

次のスクリプトを使い,Wake on Lanのマジックパケットを別のPCから送信する。 PCの電源が入ったら成功。

#!/bin/bash
Broadcast=255.255.255.255
PortNumber=4000
MAC=$1
echo -e $(echo $(printf 'f%.0s' {1..12}; printf "$(echo $MAC | sed 's/://g')%.0s" {1..16}) | sed -e 's/../\\x&/g') | nc -w1 -u  $Broadcast $PortNumber

Comments !

social