WOL: Mit Synology andere aufwecken Webbasiert

ITisgood

Benutzer
Mitglied seit
29. Nov 2021
Beiträge
4
Punkte für Reaktionen
0
Punkte
1
Hallo,
Ich würde mich über jede Hilfe sehr freuen.
Es geht darum, dass ich gerne mit meinem eigenen PHP Skript verschiedene Nasen aufwecken wollen würde.
Ich habe auf meiner Synology DS218play einen funktionierenden Webserver mit php7.4.
Jetzt ist das Problem, dass ich mit dem selben Skript auf dem lokalen IIS auf win10 erfolgreich die Nas aufwecken konnte, allerdings nicht von den lokalen Webserver der Nas.

Ich habe das folgene Skript verwendet.

Code:
<?php
 
class WakeOnLAN {
    
    public function wakeUp($macAddress){
        
        $broadcastAddress = '192.168.0.255';
        
        $macAddressHexadecimal = str_replace(':', '', $macAddress);
        
        if (!ctype_xdigit($macAddressHexadecimal)) {
            echo ('Mac address invalid, only 0-9 and a-f are allowed');
        }
        
        $macAddressBinary = pack('H12', $macAddressHexadecimal);
 
        $magicPacket = str_repeat(chr(0xff), 6).str_repeat($macAddressBinary, 16);
        
        if (!$fp = fsockopen('udp://'.$broadcas, 7, $errno, $errstr)) {
            
            echo ('Cannot open UDP socket: {$errstr} '.'Fehlernummer:'.$errno);
        }
        
        fputs($fp, $magicPacket);
        fclose($fp);
    }
}

?>

Also eig drüfte es nicht am Skript liegen, da es auf win10 ja funktioniert.
Allerdings könnte es an der Broadcast Adresse liegen. Mit dieser gibt er mir den Fehler zurück "Cannot open UDP socket: Permission denied Fehlernummer:13".
Aber wenn ich die IP der Nas, bzw jede andere verwende, wird das UPD Magik Packet verschickt aber weckt die Nas nicht auf.
Was kann ich tun? Hat dazu vielleicht irgendwer eine Idee?

Vielen dank schonmal für eure Hilfe

MfG
 

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
2.226
Punkte für Reaktionen
799
Punkte
154
Muss es ein PHP-Skript sein für das, was du erreichen willst?

Ich wecke meine Backup-NAS' von der produktiven Syno aus dem Taskplaner mit
Code:
/usr/syno/sbin/synonet --wake xx:xx:xx:xx:xx:xx ethX
auf...

Wenn Du in SSH nur synonet aufrufst, bekommst Du eine kurze Hilfe der Optionen angezeigt...
 

ITisgood

Benutzer
Mitglied seit
29. Nov 2021
Beiträge
4
Punkte für Reaktionen
0
Punkte
1
Vielen Dank für die Schnelle Antwort.

Muss es ein PHP-Skript sein für das, was du erreichen willst?
Ja bestenfalls schon, weil das Aufwecken über eine Webseite laufen soll die man von außen erreichen kann.
 

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
2.226
Punkte für Reaktionen
799
Punkte
154
Ah, ok. Das kam für mich im ersten Post nicht so durch. Dann ist mein Ansatz natürlich nicht der Richtige.

Es sei denn, man kann in PHP externe Programme aufrufen, aber da fehlt mir der Background.
 

ITisgood

Benutzer
Mitglied seit
29. Nov 2021
Beiträge
4
Punkte für Reaktionen
0
Punkte
1
Problem ist, dass ich mit der Nas kein UPD packet an die Broadcast Adresse schicken kann.
Denn nur dann wachen die anderen Nasen auf.
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
14.102
Punkte für Reaktionen
3.919
Punkte
488
Hast du schonmal probiert, dass Script irgendwie über die Konsole als root zu starten?

Ich kenne mich mit PHP überhaupt nicht aus, habe aber selbst schon einen WOL-Client geschrieben. Deshalb weiß ich, dass dieses spezielle Paket per UDP an die Broadcast-Adresse des Subnetzes raus muss. Die Fehlermeldung klingt ja nach fehlenden Berechtigungen, aber es könnte ja auch sein, dass einfach nur der zugehörige, passende NIC nicht ermittelt werden kann.
 

ITisgood

Benutzer
Mitglied seit
29. Nov 2021
Beiträge
4
Punkte für Reaktionen
0
Punkte
1
Hast du schonmal probiert, dass Script irgendwie über die Konsole als root zu starten?
Ne habe ich noch nicht. Aber das dürfte mit PHP auch schwierig werden so viel ich weiß.


Die Fehlermeldung klingt ja nach fehlenden Berechtigungen
Ja genau das habe ich mir auch schon gedacht. Aber ich habe keine Lösung gefunden um die Berechtigung zu ändern.
Weiß dazu vielleicht jemand zufällig wie man so eine Berechtigung für einen Webserver ändern kann?

könnte ja auch sein, dass einfach nur der zugehörige, passende NIC nicht ermittelt werden kann
Also die NIC müsste eig erreichbar sein und die Mac-Adr ist auch die Richtige. Der Webserver befindet sich ja auch im selben Subnetz.
Zudem ist es egal welche Mac-Adr ich angebe, es kommt immer dieser Fehler wenn ich die Broadcast-Adr verwende. :(
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
14.102
Punkte für Reaktionen
3.919
Punkte
488
Wie sieht deine Netzwerkkonfiguration aus? Hat deine DS mehrere, aktive NICs oder ist gar ein Bond konfiguriert? Es könnte ja auch an sowas liegen.
 

Ulfhednir

Benutzer
Sehr erfahren
Mitglied seit
26. Aug 2013
Beiträge
3.515
Punkte für Reaktionen
1.110
Punkte
194
Mit aktivierter shell-exec können auch Bash-Befehle per PHP verwendet werden. Das habe ich zumindest vor ein paar Jahren verwendet, um ein Perl-Skript zu steuern. https://www.php.net/manual/de/function.shell-exec.php

Insofern könntest du versuchen das bereits von Adama gepostete Skript damit zu verwursten. Der Netzwerkadapter wäre ggf. anzupassen.
/usr/syno/sbin/synonet --wake XX:XX:XX:XX:XX:XX eth0

Ich kann dir aber nicht (mehr) sagen, ob das shell-exec out of the box funktionierte oder ob man hier zusätzlich die php-configs einstellen musste.
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat