Recent Comments

日記:作業機死亡
 [01/04] perry様
DiCEのプラグイン編集
 [01/02] foreclosures mn様
 [01/02] foreclosures panama city beach florida様
 [01/02] foreclosures panama city beach florida様
鼠解剖
 [01/01] nick_botale様
 [07/17] げんき
 [07/17] s-yama先生様
日本の夏・すだれ
 [01/01] nick_orchil様
RBIO:HDD・CPUの温度監視をして扇風機を自動でON/OFFする。
 [10/07] げんき
 [10/03] とおりすがり様

Profile

 Vine Linux 3.2で自宅サーバ構築・運営するにあたっての覚え書き。トラブルシューティング・思いつきのPHPスクリプト。愛車CB5 VIGORのDIY。やらの紹介。

中の人

なかのひと
Graph 207.12.2
Year:  Month:  Day

<<< PostgreSQLの自動バックアップ <<<  ||  >>> PHP:ftpwhoの出力情報をWEBで表示する >>>

PHP:WOLを使ってWWW経由で非常時起動マシンを起動

2007年12月02日

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が有効になった。
image

WOLを使う
具体的には、起動させたいマシンのNICのMACアドレス宛に、Magic Packetと呼ばれる決まったパケットを送りつけてやればいいらしい。
そしてそんなパケットがどーだこーだとか面倒なことをやってくれる素敵プログラムが配布されてる。
作者に感謝しつつ、http://gsd.di.uminho.pt/jpo/software/wakeonlan/から最新版のwakeonlanをダウンロード。
.tar.gzになってるので、

$ wget http://gsd.di.uminho.pt/jpo/software/wakeonlan/downloads/wakeonlan-0.41.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ってのが実行ファイルで、これだけあれば動く。
$ ./wakeonlan 00:14:2A:**:**:**

って感じでMACアドレスを指定してやるだけでいい。
メインマシンの電源を落としてこれを実行してやるといきなり電源が入った。
すんげーハイテク気分。

WWW経由で実行する
さて、これでSSHでサーバにログインすればWOLを使える状態にはなったけど、SSHってのはあんまりユビキタスな感じじゃない。
やはりWWW経由で実行できるようにしないと。そうすれば、携帯からでも起動できて「いつでもどこでも」感が倍増どころの騒ぎじゃない。

WOL実行スクリプトを置くためのディレクトリをapacheでアクセス出来る場所に作って、そこにwakeonlanをコピーする。

$ mkdir ~/public_html/wol
$ cp wakeonlan ~/public_html/wol
$ cd ~/public_html/wol
$ vi index.php

index.phpの最小限の中身は
<?php
exec("./wakeonlan 00:14:2A:**:**:**");
?>

こう。
対象になるマシンが1台であればこれだけでも充分に事足りるかと。
複数台のマシンに一斉に起動したり、選択して起動したりしたい場合は、マシン名とMACアドレスの一覧CSVファイルでも作って、そこからチェックボックスを作ってPOSTで送信して処理するような形にすればいいんじゃないかな。
というか俺はそうしてるので、ご要望があれば体裁を整えてソース公開します。

2007.12.19追記
要望があったのでソース公開。
ツッコミ歓迎。
ソースにコメント書いてないので質問あればどうぞ。
WOL送信スクリプト
MACアドレス一覧CSVファイル("名前","MACアドレス","CHECKED(任意)")

<<< PostgreSQLの自動バックアップ <<<  ||  >>> PHP:ftpwhoの出力情報をWEBで表示する >>>

アンケート

このページの内容はいかがでしたか?
片手間にポチっと送信してやってください。
役に立った 4
おもしろかった 0
ふつー 0
つまらなかった 0
欲しい情報と違った 0
Score:8

トラックバック

このエントリーのトラックバックURL:
http://www.genkikko.net/mt/mt-tb.cgi/64

コメントを投稿