Docker: WOL und Shutdown

Hi Zusammen,

ich habe erfolgreich meine IPS 4.4 auf Ubuntu Installation in die IPS 5 Docker Umgebung migriert. Es funktioniert alles soweit, bis auf mein Steuerscript, welches PCs aufwecken, bzw. wieder in den Schlaf schickt. Ich habe unter Ubuntu folgende Befehle benutzt:

Zum aufwecken:

wakeonlan <mac adresse>

Zum herunterfahren:

Windows: net rpc shutdown -U <User> - I <hostname>
Linux: sudo ssh <user> poweroff

Habe ich irgendwie eine Möglichkeit dieses im Container zu bewerkstelligen?
Vielen Dank,
Tommy

Zu WOL schau mal hier: Wake On Lan

Für SSH hatte Nall-Chan irgendwo mal ein paar PHP Skripte rumfliegen gehabt…

paresy

Super, WOL funktioniert nun mit php :slight_smile: Danke für den Tipp!

function WakeOnLan($addr, $mac, $socket_number){

    if (strlen($mac) != 17)
        return FALSE;

    if (preg_match('/[^A-Fa-f0-9:]/',$mac)) 
        return FALSE;

    $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 "<div class=\"messageNOK\">Can't create socket!</div>
";
        echo "Error: '".socket_last_error($s)."' - " . socket_strerror(socket_last_error($s));
        return FALSE;
    } 
    else {
        $opt_ret = socket_set_option($s, SOL_SOCKET, SO_BROADCAST, TRUE);
    
        if ($opt_ret < 0) {
            echo "setsockopt() failed, error: " . strerror($opt_ret) . "<br />
";
            return FALSE;
        }
    
        if (socket_sendto($s, $msg, strlen($msg), 0, $addr, $socket_number)) {
            $content = bin2hex($msg);
            echo "<hr />
";
            echo "<div class=\"messageOK\">Magic Packet Sent!</div>
";
            echo "<textarea readonly class=\"textarea\" name=\"content\" >".$content."</textarea><br />
";
            socket_close($s);
            return TRUE;
        }
        else {
            echo "<div class=\"messageNOK\">Magic Packet failed to send!</div>
";
            return FALSE;
        } 
    }
}
 

Für den Shutdown wollte ich nun SSH mit dem integrieten OpenSSH Server in Windows 10 nutzen. Leider komme ich bei dem Thema php-ssh2 mit ssh2_connect() und ssh2_exec() nicht weiter. Kann ich das Package php-ssh2 im Container betrieben?

Danke und LG Tommy

Hallo,
ich schaffe es nicht mit den Skript einen PC zu starten. Muss ich im Docker noch einen Port freischalten?
Ich habe es mit Port 9 (UDP) versucht kein Erfolg???

Am Docker Container musste dafür nichts gemacht werden, ich habe dem Container allerdings eine IP zugewiesen und betreibe diesen nicht über NAT. Vielleicht macht das einen Unterschied.
Zudem muss auf dem PC das WOL aktiviert sein:

LG Tommy