2012年08月31日23時16分
PHPでWakeOnLan
現在ではほとんどのComputerがWakeOnLan(通称WOL)に対応しました。
これにより、多少時間のかかるComputerの起動を帰宅前にちょっと早く起動しておくなど、RemoteによるComputerの起動が実現でき、とても便利な機能です。
さて、これを実行するにはComputerの設定と、そのComputerに起動のためのMagicPacketを送ってやる必要があります。
今回はそのMagicPacketを送るProgramをPHPで書いてみたので紹介したいと思います。
今回はComputerの設定の仕方は省略したいと思います。
今回のProgramは関数になっていますので、以下のCodeをまずはCopy&Pasteしちゃってください。
function wakeOnLan($macAddr, $ipAddr) { // makeMagicPacket $magicPacket = ""; for ($i=0; $i<6; $i++) { $magicPacket.= chr(0xff); } $aryMacAddr = explode(":", $macAddr, 6); $buffer = pack("H*H*H*H*H*H*", $aryMacAddr[0], $aryMacAddr[1], $aryMacAddr[2], $aryMacAddr[3], $aryMacAddr[4], $aryMacAddr[5]); for ($i=0; $i<16; $i++) { $magicPacket.= $buffer; } // makeBroadCastAddr $aryIpAddr = explode(".", $ipAddr, 4); if ($aryIpAddr[0] < 127) { $aryIpAddr[1] = "255"; } if ($aryIpAddr[0] < 191) { $aryIpAddr[2] = "255"; } if ($aryIpAddr[0] < 223) { $aryIpAddr[3] = "255"; } $broadCastAddr = join(".", $aryIpAddr); // send $fp = fsockopen("udp://".$broadCastAddr, 2304, $errno, $errstr); if (!$fp) { print("ERROR: $errno - $errstr\n"); } else { fwrite($fp, $magicPacket); fwrite($fp, $magicPacket); fclose($fp); } }
使い方は簡単、関数wakeOnLanに起動したい対象のComputerのMAC AddressとIPAddressを指定するだけです。
ただし、おそらくRouter越えはしないと思うので、IPAddressは255.255.255.255を指定しておいても大丈夫です。
では使用例を示します。
wakeOnLan("FF:FF:FF:FF:FF:FF", "255.255.255.255");
この例ではMAC Addressが”FF:FF:FF:FF:FF:FF”のComputerを起動しています。
IPAddressは前述のとおり正しいIPAddrでも255.255.255.255でも通常は構いません。
とても簡単ですよね!
Filed under: PHP — ほくと 23:16
Comments (0)
Tags :
No comments yet.