WAKE ON LAN - PHP
Aus VDR Wiki
(Unterschied zwischen Versionen)
Hulk (Diskussion | Beiträge) (Aus WOL extrahiert) |
Hulk (Diskussion | Beiträge) 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, | + | $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.
/** * 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; } }