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.