WOL per Skript funktioniert auf einmal nicht mehr

Erledigt und vielen Dank.

Wie sollte denn nun das Skript korrekt aussehen? Kenne mich mit php leider nicht aus☹

<?
$mac = „xxxxxxxxxxxx“; //MAC Adresse des einzuschaltenden Gerätes
$ip = „255.255.255.255“; // Broadcast adresse

wake($ip,$mac,15);//Port kann irgendwas sein

function wake($ip, $mac, $port)
{
$nic = fsockopen(„udp://“ . $ip, $port);
if($nic)
{
$packet = „“;
for($i = 0; $i < 6; $i++)
$packet .= chr(0xFF);
for($j = 0; $j < 16; $j++)
{
for($k = 0; $k < 6; $k++)
{
$str = substr($mac, $k * 2, 2);
$dec = hexdec($str);
$packet .= chr($dec);
}
}
$ret = fwrite($nic, $packet);
fclose($nic);
if($ret)
return true;
}
return false;
}

?>

Kann mit eventuell jemand ein funktionierendes Skript hier posten? Mein Skript funktioniert leider nicht mehr:/
Wäre super😉

Dies funktioniert bei mir. Sieht aber genauso aus wie bei dir.
Hast du mal mit Wireshark geschaut ob bei dir ueberhaupt ein UDP-Paket ankommt?

//******************************************************************************
// Wake on LAN
//******************************************************************************
function WakeOnLan($mac = "xxxxxxxxxxxx",$port = 9)
	{
	$debug = true;

	$ip = "192.168.1.255"; 		// Broadcast Adresse funktioniert
	$ip = "255.255.255.255"; 	// Broadcast Adresse funktioniert

  	$nic = fsockopen("udp://" . $ip, $port);
  	if($nic)
		{
    	$packet = "";
    	for($i = 0; $i < 6; $i++)
      		$packet .= chr(0xFF);
    	for($j = 0; $j < 16; $j++)
    		{
      		for($k = 0; $k < 6; $k++)
      			{
        		$str = substr($mac, $k * 2, 2);
        		$dec = hexdec($str);
        		$packet .= chr($dec);
      			}
    		}
   		$ret = fwrite($nic, $packet);
   		fclose($nic);

		if ( $debug ) IPSLogger_Dbg(basename(__FILE__),'WakeonLAN:'.$mac." Port: ". $port." Ret:".$ret );

		}

	}

Hier noch einmal das Script, welches bei mir unter Windows und Linux funktioniert:

<?php

// WakeOnLAN

$bcast = "192.168.178.255"; // broadcast address for the local subnet 192.168.178.0/24
$mac_addr = "XX:XX:XX:XX:XX:XX"; // MAC-address of network interface 

flush();

WakeOnLan($bcast,$mac_addr);


function WakeOnLan($addr, $mac)
{
$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;

// send it to the broadcast address using UDP
// SQL_BROADCAST option isn't help!!
$s = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
if ($s == false)
{
echo "Error creating socket!
";
echo "Error code is '".socket_last_error($s)."' - " . socket_strerror(socket_last_error($s));
}
else
{
// setting a broadcast option to socket:
$opt_ret = socket_set_option($s, SOL_SOCKET, SO_BROADCAST, 1);
//echo $opt_ret. "
";
if($opt_ret < 0)
{
echo "setsockopt() failed, error: " . strerror($opt_ret) . "
";
}

$opt_ret = socket_set_option($s, SOL_SOCKET, SO_REUSEADDR, 1);
//echo $opt_ret. "
";
if($opt_ret < 0)
{
echo "setsockopt() failed, error: " . strerror($opt_ret) . "
";
}

$e = socket_sendto($s, $msg, strlen($msg), 0, $addr, 2050);
//echo $e. "
";
socket_close($s);
echo "Magic Packet sent (".$e.") to ".$addr.", MAC=".$mac;
}
}


?>

Die Broadcast-Adresse bitte an das eigene (Heim-)Netzwerk anpassen.

Besten Dank, werde es Donnerstag mal mit zwei PCs testen.

Ich verwende IPS im Docker meiner Syno. Bisher habe ich von den vielen Skripten nicht eines zum Laufen bekommen.
Mein kleiner NUC möchte nur zart per UDP geweckt werden und ist auch noch mit der Portnummer sehr anspruchsvoll.
Läuft also eher auf das Magic Packet hinaus.
Im Docker habe ich auch die Portfreigaben als UDP gemacht. Bringt aber nichts. Kann es sein, dass das im Docker gar nicht geht, weil nicht das ganze Betriebssysten zur Verfügung steht?

Ich kenne mich mich Docker nun nicht aus, aber das Problem wird eher sein, dass Du bei Docker ja Ports konfigurieren musst. In dem Fall brauchst Du ein UDP Broadcast, vielleicht hilft daher eine Google Suche zu UDP Broadcast Docker weiter das Problem zu beheben bzw. zu prüfen ob Du passende Einstellungen bei Dir vorgenommen hast.