WOL: Mit Synology andere aufwecken Webbasiert

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

ITisgood

Benutzer
Registriert
29. Nov. 2021
Beiträge
4
Reaktionspunkte
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
 
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...
 
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.
 
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.
 
Problem ist, dass ich mit der Nas kein UPD packet an die Broadcast Adresse schicken kann.
Denn nur dann wachen die anderen Nasen auf.
 
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.
 
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. :(
 
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.
 
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.
 
Status
Für weitere Antworten geschlossen.
 

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