Mit der folgenden Funktion können WakeOnLAN-fähige Computer im lokalen Netzwerk gestartet werden.
<?php Trallala /** * WakeUpComputer() * * Sends a MagicPaket to wake up a computer * * MagicPaket (116 bytes) * * byte content * --------------------------- * 1..6 MAC-Address * 7 0x00 * 8 0x74 * 9 0xFF * 10 0xFF * 11 0xFF * 12 0xFF * 13 0xFF * 14 0xFF * 15..110 6 x MAC-Adress * 111 0x40 * 112 0x00 * 113 0x90 * 114 0x90 * 115 0x40 * 116 0x00 * * * @author Christoph Steindorff, ECW GmbH <cst@ecw.de> * @param string $strMacAddress, e.g. '001111d35df8' * @param integer $iPort, e.g. 80 * @return boolean TRUE: packet send, FALSE: error */ function WakeUpComputer($strMacAddress,$iPort=2050) { $strMAC=''; $strMagicPaket=''; if (strlen($strMacAddress) == 12) { for ($x=0; $x<6; $x++) { $strMAC .= chr(hexdec(substr($strMacAddress,($x*2),2))); } // Part 1: MAC-Address - Bytes 1..6 $strMagicPaket = $strMAC; // Part 2: Bytes 7..8 $strMagicPaket .= chr(0x00); $strMagicPaket .= chr(0x74); // Part 3: 6 x 0xFF - Bytes 9..14 for ($x=0; $x<6; $x++) { $strMagicPaket .= chr(0xFF); } // Part 4: 16 x MAC-Address - Bytes 15..110 for ($x=0; $x<16; $x++) { $strMagicPaket .= $strMAC; } // Part 5: Bytes 111..116 $strMagicPaket .= chr(0x40); // 111 $strMagicPaket .= chr(0x00); // 112 $strMagicPaket .= chr(0x90); // 113 $strMagicPaket .= chr(0x90); // 114 $strMagicPaket .= chr(0x40); // 115 $strMagicPaket .= chr(0x00); // 116 // Send Paket $fudp = fsockopen('udp://255.255.255.255',$iPort,$errno,$errstr); if ($fudp) { fwrite($fudp, $strMagicPaket); fclose($fudp); } else { return FALSE; } } else { return FALSE; } return TRUE; } if WakeUpComputer('001111d35df8') { echo 'MagicPaket gesendet.'; } else { echo 'MagicPaket nicht gesendet'; } ?>
Um unter Windows die MAC-Adressen der lokalen Computer herauszufinden, kann man sie einfach von der Konsole aus anpingen und anschließend ein ‚arp -a‘ ausführen.
In folgenden Beispiel, wollen wir die MAC-Adresse vom Rechner mit der lokalen IP-Adresse 192.168.0.47 herausfinden. Zunächst pingen wir den Rechner an: ‚ping 192.168.0.47‘. Anschließend rufen wir ‚arp -a‘ auf. Nun wird uns die MAC-Adresse angezeigt, die zu der IP-Adresse gehört.
Diesen Wert, in unserem Beispiel ’00-04-75-d7-e0-92′, verwenden wir nun mit unserer Funktion WakeUpComputer(). Allerdings müssen alle Bindestriche entfernt werden. Der Aufruf wäre also: WakeUpComuter(‚000475d7e092‘);