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.