Linux で、インストールなしに Wake On LAN

インストールなし、と言いましたが、使うコマンドは、
vim xxd nc
なので、それは必要です。

調査

Wake On LANさせたいPCの、MACアドレスを調べます。
Windowsなら、コマンドプロンプトで「ipconfig /all」すると

Physical Address. . . . . . . . . : 00-0E-7B-96-A6-01

とか出ます。
複数出る場合は、どのネットワークから起動するかで、使うものが決まります。
Linuxなら、「ifconfig」(パス通ってなければ「/sbin/ifconfig」か?)

HWaddr 00:0E:7B:96:A6:01

というのが、それです。
ついでに、ネットワークのブロードキャストを調べておきましょう。

magic packet を用意する

Magic Packetは、最初に「0xFFFFFFFF」(6バイトのFF)と、MACアドレスが16個続いたものです。
前述のバイナリファイル編集で、以下のようなファイルを作成しましょう。

0000000: ff ff ff ff ff ff 00 0e 7b 96 a6 01 00 0e 7b 96  ........{.....{.
0000010: a6 01 00 0e 7b 96 a6 01 00 0e 7b 96 a6 01 00 0e  ....{.....{.....
0000020: 7b 96 a6 01 00 0e 7b 96 a6 01 00 0e 7b 96 a6 01  {.....{.....{...
0000030: 00 0e 7b 96 a6 01 00 0e 7b 96 a6 01 00 0e 7b 96  ..{.....{.....{.
0000040: a6 01 00 0e 7b 96 a6 01 00 0e 7b 96 a6 01 00 0e  ....{.....{.....
0000050: 7b 96 a6 01 00 0e 7b 96 a6 01 00 0e 7b 96 a6 01  {.....{.....{...
0000060: 00 0e 7b 96 a6 01                                ..{...
~
~
:%! xxd -g 1

ファイルの長さは、102バイトです。

Wake On LAN!

あとは、ターゲットに向けて、Magic Packetを投げるだけ。
相手が寝ているので、IPアドレスは確定していません。
UDPのブロードキャストで受け取ってもらいましょう。
ポートは任意です。
ブロードキャストが、192.168.0.255で、3027ポートを使い、
先ほど作成したファイルが「wol.bin」なら、

$ nc -b -u -q 1 -n 192.168.0.255 3027 < wol.bin

になります。

備考

Wake On LANされる側のBIOSの設定をお忘れなく。
ルータ越えは、ルータに対していろいろせんといかんと思います。
うちのPCは、iptablesが厳しいので、ntpとかdhcpとかdnsとかのポートでやってます。
WindowsからWake On LANするなら、ツールを導入した方が早そうです。
ping」を流しておくと、起動確認できるかもしれません。
nc(netcat)は、便利(危険)だなぁ。