2012年08月31日23時16分
PHPでWakeOnLan
現在ではほとんどのComputerがWakeOnLan(通称WOL)に対応しました。
これにより、多少時間のかかるComputerの起動を帰宅前にちょっと早く起動しておくなど、RemoteによるComputerの起動が実現でき、とても便利な機能です。
さて、これを実行するにはComputerの設定と、そのComputerに起動のためのMagicPacketを送ってやる必要があります。
今回はそのMagicPacketを送るProgramをPHPで書いてみたので紹介したいと思います。
今回はComputerの設定の仕方は省略したいと思います。
今回のProgramは関数になっていますので、以下のCodeをまずはCopy&Pasteしちゃってください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | 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を指定しておいても大丈夫です。
では使用例を示します。
1 | 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.