WakeOnLAN
俺の作業マシン(Windows機)は非常時起動。特に静穏とかも考えてないし、常時起動してても何もしてないとか勿体ないから寝るときに落とす。
けど、Pen4 2.4GHzとか俺の持ってるマシンの中では一番偉いマシンだったりするし、不意に作業機のローカルに置いちゃってるデータが欲しいときとかに困る。
そこで、WOLの出番。
WOLとはネットワーク経由で電源落ちてるマシンを起動させるというハイテク極まりない技術。
起動さえさせちまえば、あとはVNCで何でも出来る。
マザー・BIOS・NICが対応してたら出来る模様。
ちなみに、俺のメインマシンで使ってるASRockのP4i65Gでは、オンボードのNICで可能だった。
BIOS設定
ASRockのP4i65GのBIOSではAdvancedのACPI設定のとこのPCI Devices Power OnをEnabledにしてやるとWOLが有効になった。
img_src("DSC00859.JPG"); ?>
WOLを使う
具体的には、起動させたいマシンのNICのMACアドレス宛に、Magic Packetと呼ばれる決まったパケットを送りつけてやればいいらしい。
そしてそんなパケットがどーだこーだとか面倒なことをやってくれる素敵プログラムが配布されてる。
作者に感謝しつつ、http://gsd.di.uminho.pt/jpo/software/wakeonlan/から最新版のwakeonlanをダウンロード。
.tar.gzになってるので、
$ tar zxf wakeonlan-0.41.tar.gz
$ cd wakeonlan-0.41
$ ls -l
-rw-r--r-- 1 genkikko admin 1673 Jan 28 2005 Changes
-rw-r--r-- 1 genkikko admin 155 Jan 28 2005 MANIFEST
-rw-r--r-- 1 genkikko admin 295 Jan 28 2005 META.yml
-rw-r--r-- 1 genkikko admin 447 Apr 29 2001 Makefile.PL
-rw-r--r-- 1 genkikko admin 3353 Jan 28 2005 README
-rw-r--r-- 1 genkikko admin 1120 Jan 28 2005 SIGNATURE
drwxr-xr-x 2 genkikko admin 4096 Jan 28 2005 examples/
-rwxr-xr-x 1 genkikko admin 5231 Jan 28 2005 wakeonlan
ここで、パーミッション755になってるwakeonlanってのが実行ファイルで、これだけあれば動く。
って感じでMACアドレスを指定してやるだけでいい。
メインマシンの電源を落としてこれを実行してやるといきなり電源が入った。
すんげーハイテク気分。
WWW経由で実行する
さて、これでSSHでサーバにログインすればWOLを使える状態にはなったけど、SSHってのはあんまりユビキタスな感じじゃない。
やはりWWW経由で実行できるようにしないと。そうすれば、携帯からでも起動できて「いつでもどこでも」感が倍増どころの騒ぎじゃない。
WOL実行スクリプトを置くためのディレクトリをapacheでアクセス出来る場所に作って、そこにwakeonlanをコピーする。
$ cp wakeonlan ~/public_html/wol
$ cd ~/public_html/wol
$ vi index.php
index.phpの最小限の中身は
exec("./wakeonlan 00:14:2A:**:**:**");
?>
こう。
対象になるマシンが1台であればこれだけでも充分に事足りるかと。
複数台のマシンに一斉に起動したり、選択して起動したりしたい場合は、マシン名とMACアドレスの一覧CSVファイルでも作って、そこからチェックボックスを作ってPOSTで送信して処理するような形にすればいいんじゃないかな。
というか俺はそうしてるので、ご要望があれば体裁を整えてソース公開します。
2007.12.19追記
要望があったのでソース公開。
ツッコミ歓迎。
ソースにコメント書いてないので質問あればどうぞ。
・WOL送信スクリプト
・MACアドレス一覧CSVファイル("名前","MACアドレス","CHECKED(任意)")