WAKE ON LAN - PHP

Aus VDR Wiki
Version vom 1. Februar 2015, 16:01 Uhr von Hulk (Diskussion | Beiträge)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Wakeup per PHP

Eine eigene Internet-Service Anwendung für WAKE ON LAN per PHP-Skript ist keine größere Schwierigkeit. Um einen Rechner aus einer PHP Anwendung heraus direkt zu starten, kann auch die unten stehende Funktion verwendet werden.

Datei
/function.php
/**
 * Verschickt ein WakeOnLan Paket an eine gegebene IP oder Broadcast Adresse
 * Die Mac Adresse muss im Format xx:xx:..:xx angegeben werden
 *
 * @param string $mac           Hardware Adresse des Servers
 * @param string $addr          IP oder Broadcast an die das Paket soll
 * @param integer $port         Portadresse
 * @return boolean
 */
function WakeOnLan($mac, $addr, $port) {
	$addr_byte = explode(':', $mac);
	$hw_addr = '';

	for ($a=0; $a < 6; $a++) $hw_addr .= chr(hexdec($addr_byte[$a]));

	$msg = chr(255).chr(255).chr(255).chr(255).chr(255).chr(255);

	for ($a = 1; $a <= 16; $a++)    $msg .= $hw_addr;

	$s = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
	if ($s == false) {
		echo "Error creating socket!\n";
		echo "Error code is '".socket_last_error($s)."' - " . socket_strerror(socket_last_error($s));
		return false;
	} else {
		$opt_ret =  socket_set_option($s, 1, 6, TRUE);
		if($opt_ret < 0) {
			echo "setsockopt() failed, error: " . strerror($opt_ret) . "\n";
			return false;
		}
		$e = socket_sendto($s, $msg, strlen($msg), 0, $addr, $port);
		socket_close($s);
		return true;
	}
}