VMware ESXiをインストールしたPowerEdge SC440をリモートから起動するのにwol(Wake On LAN)を使いたいので*1、Windows版のNetcat(nc)を使ってwolのマジックパケットを送信することにした。
まずWindowsに標準で入っているdebugコマンドを使ってマジックパケットのペイロード部分を作成するために、下記のテキストファイル(wol_hex.txt)を作成する。
e 0100 FF FF FF FF FF FF 01 02 03 04 05 06 01 02 03 04 05 06
e 0112 01 02 03 04 05 06 01 02 03 04 05 06 01 02 03 04 05 06
e 0124 01 02 03 04 05 06 01 02 03 04 05 06 01 02 03 04 05 06
e 0136 01 02 03 04 05 06 01 02 03 04 05 06 01 02 03 04 05 06
e 0148 01 02 03 04 05 06 01 02 03 04 05 06 01 02 03 04 05 06
e 015A 01 02 03 04 05 06 01 02 03 04 05 06 01 02 03 04 05 06
r cx
006C
n WOL.BIN
w
q
次にwol_hex.txtの「01 02 03 04 05 06」部分全てを、wolで起動したい端末のMACアドレスに置換する。*2
たとえばwolで起動したい端末のMACアドレスが「00-1E-C9-C0-00-01」の場合は下記になる。
e 0100 FF FF FF FF FF FF 00 1E C9 C0 00 01 00 1E C9 C0 00 01
e 0112 00 1E C9 C0 00 01 00 1E C9 C0 00 01 00 1E C9 C0 00 01
e 0124 00 1E C9 C0 00 01 00 1E C9 C0 00 01 00 1E C9 C0 00 01
e 0136 00 1E C9 C0 00 01 00 1E C9 C0 00 01 00 1E C9 C0 00 01
e 0148 00 1E C9 C0 00 01 00 1E C9 C0 00 01 00 1E C9 C0 00 01
e 015A 00 1E C9 C0 00 01 00 1E C9 C0 00 01 00 1E C9 C0 00 01
r cx
006C
n WOL.BIN
w
q
続いてdebugコマンドに作成したwol_hex.txtを渡してバイナリファイルを生成する。
C:\>debug < wol_hex.txt
C:\>
マジックパケットのペイロード部分ができているか念のためdebugコマンドで確認する。
C:\>debug WOL.bin
-d
3586:0100 FF FF FF FF FF FF 01 02-03 04 05 06 01 02 03 04 ................
3586:0110 05 06 01 02 03 04 05 06-01 02 03 04 05 06 01 02 ................
3586:0120 03 04 05 06 01 02 03 04-05 06 01 02 03 04 05 06 ................
3586:0130 01 02 03 04 05 06 01 02-03 04 05 06 01 02 03 04 ................
3586:0140 05 06 01 02 03 04 05 06-01 02 03 04 05 06 01 02 ................
3586:0150 03 04 05 06 01 02 03 04-05 06 01 02 03 04 05 06 ................
3586:0160 01 02 03 04 05 06 01 02-03 04 05 06 00 00 00 00 ................
3586:0170 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
-qC:\>
あとは生成したWOL.BINをNetcatに渡してUDPでディレクテッド・ブロードキャストアドレス宛に送信すれば良い。
C:\>type WOL.BIN | nc -nuw 1 192.168.0.255 9
ちなみに私が使っているのと同じNetcatが欲しい人は、下記から入手できる。
これで床暖のある居間から出ないで作業ができる♪
追記(2014/6/18)
64bit版Windowsにはdebugコマンドが無いのでcertutilコマンドを使う。
Windowsでファイルを16進数テキストに変換したり、16進数テキストをファイルに変換したりする方法