Wake on LANをWindowsでPHPを使ってやろうと思っていろいろ探していたら
yuecさんのページ、下記アドレスにて
http://www.yuec.net/blog/article.php?id=42
に詳しく紹介してあった。
それを元に早速やってみる。
まずは簡単な呼び出し用のHTML(index.html)を作る。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset= EUC-JP"> <title>WOL-Switch</title></head> <BODY BGCOLOR="#ffe0c0"> <H3 align="center">WOL-Switch-Windows版</H3> <HR> <p align="center">パソコンの電源をWake on LANします。</p> <form action="./wake_on_lan.php" method="post"> <HR> <div align="center"> <input type="radio" name="SelectName" value="compA" id="comp_a"> <label for="パソコンA">パソコンA</label> <input type="radio" name="SelectName" value="compB" id="comp_b"> <label for="パソコンB">パソコンB</label> <input type="submit" value="リモートON 実行"> </div> </form> <HR> </body> </html>
実際のWOL呼び出し部分を作る(wake_on_lan.php)
<?php//起動するパソコンのMAC Addressをここに $A_mac = '************'; $B_mac= '************'; ////初期化 $mac = ''; $mac2= ''; ////正しくパソコン名がpostされているなら
$SelNameに代入
if (isset($_POST["SelectName"])) { $SelName = $_POST["SelectName"]; } else { $SelName = "";
print("コンピュータを正しく選択してません。<br>"); print('<A HREF="./">ここをクリック</A>'); exit;
} if ($SelName == 'compA') { $mac = $A_mac; } if ($SelName == 'compB') { $mac = $B_mac; } ////紹介されているものをそのまま使わせて頂いて $mac2 = $mac; $body = h2s('FFFFFFFFFFFF'); for($i=0;$i<16;$i++) { $body .= h2s($mac); } $soc = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); socket_connect($soc, '192.168.0.255', 2304); socket_write($soc, $body, 126); socket_close($soc); function h2s($h) { $s = ''; $p = 0; while($p<strlen($h)) { $s .= chr(intval(substr($h, $p, 2), 16)); $p += 2; } return $s; } //////Wake ON LANした後の画面表示
echo <<<HTML <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <META http-equiv="Content-Type" content="text/html; charset=EUC-JP"> <TITLE>WOL起動</TITLE> <LINK rel="stylesheet" href="./css_.css" type="text/css"> <BODY> <H1>起動コンピュータ情報</H1> HTML; print( 'コンピュータ名: ' . $SelName . '<br>'); print( 'MACADRESS: ' . $mac . '<br>'); echo <<<HTML_ <H2>▼WOLで起動しました</H2><HR> <a href="../">>>【TopPageへ】</a><br> </body> </html> HTML_; ?>
これでともかくWake On LAN は動作するようだ。
ただし、予めphpのほうでsocket関数が使えるように変更しておかなければならない。
実際にphpでソケット関数を使えるようにするには
Windows版のphpの場合簡単で
php.iniの以下の行を
;extension=php_sockets.dll
のコメント(;)をはずして以下のように
extension=php_sockets.dll
しておく必要がある。
Linux版のphpの場合は、コンパイルの際のconfigureオプションに
‘–enable-sockets’ を指定する必要がある。
しかし実際、Debian Linux等を使用して方はパッケージでphpを入れている方も多い。
使いたいが為とはいえ、変更にコンパイル作業は非常にかったるい。
そこで、Linuxには便利にもWOL用コマンドがあるのでそれを利用する。
実際使うコマンドもいろいろあるようだが今回はwakeonlanコマンドを使うことにした。
インストールは普通にapt-get等で普通に入れる。
入ったら使い方は簡単、wakeonlanコマンドの後にONするパソコンのマックアドレスを
入れるだけ。それではやってみることにする。
最初と同じように、簡単な呼び出し用のHTML(index.html)を作る。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC_JP"> <title>WOL-Switch</title> </head> <BODY BGCOLOR="#ffe0c0"> <H3 align="center">WOL-Switch-Linux版</H3> <HR>
<p align="center">パソコンの電源をWake on LANします。</p> <form action="./wol_linax.php" method="post"> <HR> <div align="center"> <input type="radio" name="SelectName" value="compA" id="comp_a"> <label for="パソコンA">パソコンA</label> <input type="radio" name="SelectName" value="compB" id="comp_b"> <label for="パソコンB">パソコンB</label> <input type="submit" value="リモートON 実行"> </div> </form> <HR>
</body> </html>
実際のWOL呼び出し部分を作る(wol_linux.php)
<?php ///////////////////////////////////////////////////////////////////// //起動するパソコンのMAC Addressをここに $A_mac = '**:**:**:**:**:**'; $B_mac = '**:**:**:**:**:**'; ////初期化/////////////////////////////////////////////////////////// $mac = ""; $SelName = ""; /////////////////////////////////////////////////////////////////////////正しくパソコン名がpostされているなら
$SelNameに代入
if (isset($_POST["SelectName"])) { $SelName = $_POST["SelectName"]; } else { $SelName = "";
print("コンピュータを正しく選択してません。<br>"); print('<A HREF="./">ここをクリック</A>'); exit;
} if ($SelName == 'compA') { $mac = $A_mac; } if ($SelName == 'compB') { $mac = $B_mac; }
////画面表示/////////////////////////////////////////////////////////
echo <<<HTML <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <META http-equiv="Content-Type" content="text/html; charset=EUC-JP"> <TITLE>WOL起動</TITLE> <LINK rel="stylesheet" href="./css_.css" type="text/css"> <BODY> <H1>起動コンピュータ情報</H1><p>
sending wol to fluorite</p>
<p>
...
</p>
HTML;//WOL起動 system("wakeonlan " . $mac);
//Wake ON LANした後の画面表示
echo <<<HTML_ <p>...</p> <H2>▼WOL起動動作終了しました</H2><HR> <a href="../">>>【TopPageへ】</a><br> </body> </html> HTML_; ?>
こんなもんで動くでしょ。
これらを自宅サーバーのパスワードでユーザー制限しておける場所にセットして
外部からいたずらされないようにしておけばインターネットからでも自宅のパソコンを
ONが出来る。
ONさえ出来れば後はリモートコントロールソフト等を予め入れておくことで、外出先
から自宅のパソコンを全てコントロール出来る。
便利な世の中になったものです。
コメント