WAKE ON LAN - PHP

Aus VDR Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
(Aus WOL extrahiert)
 
K (Portadresse)
 
Zeile 10: Zeile 10:
 
  * @param string $mac          Hardware Adresse des Servers
 
  * @param string $mac          Hardware Adresse des Servers
 
  * @param string $addr          IP oder Broadcast an die das Paket soll
 
  * @param string $addr          IP oder Broadcast an die das Paket soll
 +
* @param integer $port        Portadresse
 
  * @return boolean
 
  * @return boolean
 
  */
 
  */
function WakeOnLan($mac, $addr) {
+
function WakeOnLan($mac, $addr, $port) {
 
$addr_byte = explode(':', $mac);
 
$addr_byte = explode(':', $mac);
 
$hw_addr = '';
 
$hw_addr = '';
Zeile 33: Zeile 34:
 
return false;
 
return false;
 
}
 
}
$e = socket_sendto($s, $msg, strlen($msg), 0, $addr, 2050);
+
$e = socket_sendto($s, $msg, strlen($msg), 0, $addr, $port);
 
socket_close($s);
 
socket_close($s);
 
return true;
 
return true;

Aktuelle Version vom 1. Februar 2015, 16:01 Uhr

[Bearbeiten] 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;
	}
}