Wake-on-LAN mit PowerShell: So weckst du deinen Server oder PC auf

Futuristische Darstellung von Wake-on-LAN und PowerShell

In diesem Artikel erkläre ich, wie du ein PowerShell-Skript nutzen kannst, um einen QNAP-Server (oder jedes andere Wake-on-LAN-fähige Gerät) im Netzwerk aufzuwecken. Dabei wird ein sogenanntes Magic Packet gesendet, das den Server aus dem Ruhezustand holt.

Voraussetzungen

  • Wake-on-LAN muss im BIOS/UEFI und in den Netzwerkeinstellungen des Geräts aktiviert sein.
  • Das Gerät und der Rechner, von dem aus das Skript ausgeführt wird, müssen sich im selben Netzwerk befinden.
  • PowerShell (ab Version 3.0) sollte installiert sein.

Das PowerShell-Skript

Das folgende Skript verwendet die MAC-Adresse des QNAP-Servers, um ein Magic Packet an die Broadcast-Adresse des Netzwerks zu senden. Dies ist der entscheidende Schritt, um das Gerät aufzuwecken.

# Variablen für die IP-Adresse, MAC-Adresse und Port
$IpAddress = "192.168.1.10"
$MacAddress = "24:5e:00:01:02:b7"
$BroadcastAddress = "192.168.1.255" # Standard-Broadcast-Adresse im Subnetz
$Port = 9 # Standard-Wake-On-LAN-Port

# Funktion, um das Wake-On-LAN Magic Packet zu senden
function Send-WakeOnLan {
    param (
        [string]$MacAddress,
        [string]$BroadcastAddress,
        [int]$Port
    )

    # MAC-Adresse in ein Byte-Array umwandeln
    $MacBytes = $MacAddress -split "[:-]" | ForEach-Object { [byte]("0x$_") }

    # Magic Packet erstellen (6x 0xFF gefolgt von 16 Wiederholungen der MAC-Adresse)
    $MagicPacket = @([byte]0xFF) * 6 + ($MacBytes * 16)

    # Magic Packet via UDP senden
    $UdpClient = New-Object System.Net.Sockets.UdpClient
    $UdpClient.EnableBroadcast = $true
    $Endpoint = New-Object System.Net.IPEndPoint ([System.Net.IPAddress]::Parse($BroadcastAddress), $Port)
    $UdpClient.Send($MagicPacket, $MagicPacket.Length, $Endpoint)
    $UdpClient.Close()

    Write-Output "Wake-On-LAN-Paket wurde an $MacAddress über ${BroadcastAddress}:${Port} gesendet."
}

# Wake-On-LAN senden
Send-WakeOnLan -MacAddress $MacAddress -BroadcastAddress $BroadcastAddress -Port $Port

Wie funktioniert das Skript?

Das Skript besteht aus zwei Teilen: der Definition der Funktion Send-WakeOnLan und dem Aufruf dieser Funktion mit den festgelegten Variablen.

  • MAC-Adresse: Die MAC-Adresse des Zielgeräts wird benötigt, um das Magic Packet korrekt zu adressieren.
  • Broadcast-Adresse: Die Broadcast-Adresse wird verwendet, um sicherzustellen, dass das Magic Packet alle Geräte im Netzwerk erreicht.
  • Port: Standardmäßig wird Port 9 verwendet, aber einige Geräte können auch Port 7 nutzen.
  • Magic Packet: Es handelt sich um eine spezielle Nachricht, die 6-mal 0xFF gefolgt von 16 Wiederholungen der MAC-Adresse enthält.

Nutzung

Speichere das Skript als .ps1-Datei, zum Beispiel WakeOnLan.ps1. Öffne dann PowerShell mit Administratorrechten und führe das Skript mit folgendem Befehl aus:

.\WakeOnLan.ps1

Wenn alles korrekt eingerichtet ist, wird das Magic Packet gesendet, und dein QNAP-Server sollte starten.

Fazit

Mit diesem Skript kannst du deinen QNAP-Server (oder andere Geräte) bequem per PowerShell aufwecken. Wake-on-LAN ist eine praktische Möglichkeit, Geräte effizient zu verwalten, ohne sie ständig laufen lassen zu müssen.

Hast du Fragen oder Anregungen? Schreibe sie gerne in die Kommentare!

Docker Container nach außen sichtbar machen

(Quelle: https://docs.docker.com/network/bridge/)

Nach einer frischen Dockerinstallation sind Docker-Container oft nicht von außen Erreichbar trotz der exposed Ports und der Portfreigabe im RUN-Aufruf.

Standardmäßig wird der Traffic der Default Bridge nicht nach außen weitergeleitet. Aus diesem Grund muss das Forwarding in den Einstellungen gesetzt werden durch zwei Kommandos:
Enable forwarding from Docker containers to the outside world

Konfiguriere den Linux-Kernel zum Erlauben des IP-Forwardings:$ sudo sysctl net.ipv4.conf.all.forwarding=1
Ändere die Richtlinie für iptables Weiterleitungen von Drop to Accept:$ sudo iptables -P FORWARD ACCEPT

AMD Grafiktreiber unter Ubuntu 20.04 installieren

Da ich eine AMD-Grafikkarte mein Eigen nenne, wollte ich diese auch unter Ubuntu installieren.
Der aktuelle Treiber bei AMD ist zum Zeitpunkt der Erstellung des Artikels hier zu finden:

https://www.amd.com/en/support/kb/release-notes/rn-amdgpu-unified-linux-22-10-2

Wichtig: Es wird noch kein Ubuntu 22.04 unterstützt.

Nach der Installation erhielt ich folgende Fehlermeldung:

The following packages have unmet dependencies:
 amdgpu-lib : Depends: libwayland-amdgpu-client0 but it is not going to be installed
              Depends: libwayland-amdgpu-server0 but it is not going to be installed
              Depends: libgbm1-amdgpu but it is not going to be installed
              Depends: libegl1-amdgpu-mesa but it is not going to be installed
              Depends: libegl1-amdgpu-mesa-drivers but it is not going to be installed
              Depends: xserver-xorg-amdgpu-video-amdgpu but it is not going to be installed
 vulkan-amdgpu-pro : Depends: libwayland-amdgpu-client0 but it is not going to be installed

Die Ursache habe ich hier gefunden:
Quelle:https://stackoverflow.com/questions/61875869/ubuntu-20-04-upgrade-python-missing-libffi-so-6

  1. Ubuntu 20.04 upgraded libffi6 to libffi7
  2. Python is still looking for libffi6

Python benötigt die Libffi-Library 6, Ubuntu 20.04 hat aber bereits Version 7.
Um die Fehlermeldung bei der Installation zu umgehen, muss einfach nur die Version 6_3.2.1-8 der Library heruntergeladen und installiert werden:

http://mirrors.edge.kernel.org/ubuntu/pool/main/libf/libffi/libffi6_3.2.1-8_amd64.deb

Anschließend habe ich den Treiber mit

sudo amdgpu-install --opencl=legacy --vulkan=pro --no-32 --accept-eula

erfolgreich installiert.

Remotedesktop auf zwei von drei Bildschirmen einsetzen

In diesem Beitrag erkläre ich Euch, wie Ihr Eure Remotedesktopverbindung auf beliebige Monitore beschränken könnt. Im konkreten Beispiel auf zwei von dreien. Es geht aber auch eine beliebige andere Kombination – wichtig ist dass die Bildschirme aneinander angrenzen.

Ausgangslage

Vielleicht kennt ihr das seit dem Pandemiejahr 2020 im Homeoffice?
Wir auf Arbeit haben den Luxus, dass wir über die Firmentelefonanlage von zu Hause aus telefonieren können. Dafür haben wir die Telefoniesoftware auf dem heimischen PC installiert, arbeiten aber per Remote-Desktop auf den Büro-PC.

Jetzt habe ich aber das Geraffel, dass zum Annehmen, wählen und Auflegen von Telefongesprächen erst aus der Remoteumgebung raus auf den heimischen Rechner muss, um das Telefon zu bedienen.

Bisher hatte ich das so gelöst, dass ich entweder über alle Bildschirme eine RDP-Sitzung geöffnet hatte oder aber über nur einen. Zum Arbeiten im Büro benötige ich jedoch im Idealfall zwei Bildschirme. Warum also nicht die RDP-Sitzung auf zwei von drei Bildschirmen reduzieren?

Lösungsansatz

Ich erstelle eine RDP-Sitzung, in der ich den Haken für „Alle Monitore für Remotesitzung verwenden“ anhake.

Alle Monitore Verwenden ist anzuhaken, um sich mit allen Bildschirmen per RDP zu verbinden.

Statt mich zu verbinden, speichere ich die Verbindungseinstellung in eine Verbindungsdatei. Diese öffne ich mit einem Editor
Hier füge ich ganz unten eine Zeile an:

selectedmonitors:s:0,2

Hier könnt ihr mit den Zahlen hinter den Doppelpunkt die Bildschirmnummern (mit 0 aufsteigend) angeben, die ihr verwenden wollt.

Eingeben der Monitornummer wählt aus wo der RDP geöffnet wird.

Gegebenfalls müsst ihr mit den Zahlen etwas ausprobieren, bis ihr die richtige Bildschirmkombination gefunden habt. Nach einer Weile ausprobieren fand ich heraus, dass 0,2 für mein persönliches Monitor-Setup das richtige ist.
Ihr könnt zum Beispiel mit nur einer Zahl als Angabe erstmal testen, welcher Bildschirm welche Nummer hat, um Euch an das richtige Ergebnis heranzutasten.
Viel Erfolg!

Quelle: Computerbase

Erfahrungsbericht mit Officelizenzen des Onlineshops Crauley.de

UDPATE: Seit 2021 – der Shop wurde gehackt und anschließend offline genommen – er existiert nicht mehr.

Ein Geheimtipp wenn man weiß worauf man sich einlässt!

Ich zitiere mal den Volltext hier im Beitrag, was dem Kunden versprochen wird:

Im Shop nur 35.-€
✔ Original Microsoft Office 2016 Professional Plus 5PC Vollversion Produktschlüssel (KEIN ABO)
✔ KEINE MSDN / KEINE VOLUMENLIZENZ
✔ Online und telefonische Aktivierung
✔ 5 PC lebenslang Nutzen inkl. Updates
✔ Voller Support von Microsoft (Retail)
✔ Download / registrieren über https://setup.office.com
✔ Private und gewerbliche Nutzung
✔ Deutscher Händler / Rechnung per E-Mail (mit USt.)
✔ Garantierte Funktion der Keys
✔ Käuferschutz bei PayPal Zahlungen
✔ Sofortige Lieferung (im Shop)
✔ Sofort Download (im Shop)
✔ Alle Sprachen
✔ geprüfte Herkunft der Keys
✔ Zahlungsmethoden: Bankzahlung, Lastschriftverfahren, PayPal, Kreditkarten (Visa, Mastercard, AMEX)
✔SHOP: https://shop.crauley.de/produkt/office-2016-5pc/

Microsoft Office 2016 Professional Plus
Enthalten ist der Office 2016 Professional Plus 5PC Produktschlüssel (Product Key) von Microsoft.

Enthalten sind in dieser Version:

Word
Excell
PowerPoint
OneNote
Outlook
Publisher
Access
Skype for Business

Hinweis: Virtuelles Produkt, es wird nur der Produktschlüssel versendet. Du kannst die Software über setup.office.com herunterladen und installieren. Mit dem hier gekauften Key kann das Produkt außerdem online aktiviert werden.

Die verwendeten Namen, Begriffe und Grafiken können Marken- oder Warenzeichen im Besitze ihrer rechtlichen Eigentümer sein. Die Rechte der erwähnten und benutzten Marken- und Warenzeichen liegen ausschließlich bei deren Besitzern.

Meine erste Testlizenz war schnell gekauft (Direkt bei https://shop.crauley.de/microsoft-office/ ) (was hat man zu verlieren? 10 Euro für eine Office 2016 Lizenz? Damit kann man leben!

Diese Lizenz habe ich Ruckzuck bei setup.office.com registriert und erfolgreich nach der Installation aktivieren können .

Nachdem der Test erfolgreich war, erlag ich dem naiven Irrglauben: Eine Lizenz, welche ich bei setup.office.com erfolgreich registriert habe, kann mir keiner wegnehmen und ist wie ein Eigentumsnachweis und bleibt für mich auf dem gleichen Rechner aktivierbar und ist ob des geringen Preises legalisiert.
Aus diesem Grund habe ich weitere Lizenzen für den Firmengebrauch gekauft. Eine von diesen Lizenzen habe ich sofort verwendet – die anderen 14 Lizenzen habe ich auf Vorrat gekauft.

Heute – 4 Wochen später – wollte ich die Lizenzen registrieren, installieren und anschließend aktivieren mit dem Ergebnis, dass er mit einem Mal nichts mehr von den Keys wissen will – aus irgendeinem Grund sind die Keys NICHT MEHR BEKANNT ??

Praktisch heißt das für mich: Ich kaufe beim dem Anbieter KEINE LIZENZ, sondern einen Produktkey, welcher VORRÜBERGEHEND für Download, Registrierung und Installation funktioniert. Wenn ich die Keys 30Tage später noch verwenden will, sind sie wertlos, weil sie sich auch nicht mehr aktivieren lassen!

Daraufhin habe ich mit dem Verkäufer Kontakt aufgenommen – Ergebnis:

Ich kaufe dort einen Produktkey, der nur 14-30 Tage gültig ist. Wenn dieser nicht mehr geht, kann ich mit dem Verkäufer Kontakt aufnehmen und er stellt mir kostenfrei einen neuen Key zur Verfügung.
Das hat auch einwandfrei geklappt – war mir im Vorfeld nicht klar.
Update 2020: Inzwischen ist der Shop transparenter in der Kommunikation – es lässt sich gut erkennen wie lange ein Produktkey funktioniert nach dem Kauf.

Das Problem lässt sich jedoch GUT umgehen, indem die Lizenzen telefonisch aktiviert werden und ein Aktivierungscode zum PC notiert wird, damit ich auch in Zukunft diese Lizenz auf diesem PC aktivieren kann – insofern kann ich mit diesem Workarround gut leben.

Alternativ kann man bei Crauley auch „ECHTE“ Lizenzen (rechtskonform und mit der gesetzlich vorgeschriebenen Biographie) kaufen für ca. 70% des Neupreises – damit ist man dann auch bei einem Lizenzaudit auf der sicheren Seite.

Update 2020:

Das Kundenkonto des Shopswurde inzwischen weiterentwickelt und bietet eine komfortable Lizenzübersicht an. Mit dem Anbieter hatte ich bei weiteren Lizenzkäufen Kontakt jedes aufgetretene Problem beheben können und kann dem Shop in jedem Falle einen direkten und problemlosen Support bescheinigen!