Kurztipp: Wake on LAN unter macOS 26 ganz ohne Zusatz-Software nutzen
Wer zu Hause ein NAS, einen kleinen Homeserver oder einfach den Gaming-PC im Arbeitszimmer stehen hat, kennt das Spiel: Man sitzt gemütlich mit dem MacBook auf dem Sofa, will auf eine Datei zugreifen, aber der entfernte Rechner schlummert im Standby. Ich selbst kenne das, ich hab zwei Geräte, die ich quasi nur auf Zuruf starte und gar automatisiert herunterfahren lasse, weil ich es sonst vergesse. Und bisher habe ich eine kleine App zum Aufwecken verwendet, weil ich immer zu faul war, das Ganze per Homebrew oder Script aufs System zu wuppen.
Klar, ein Blick in den App Store von macOS 26 (Tahoe) zeigt Dutzende Apps für „Wake on LAN“ (WoL). Die sind oft bunt, manche kosten sogar Geld und sind viel zu viel. Muss das sein für eine Funktion, die eigentlich nur ein simples Datenpaket verschickt? Ich sage mal: Nein. Da wir unter macOS Python quasi „ab Werk“ an Bord haben, lässt sich das Ganze mit einem winzigen Skript erledigen. Das ist für mich sauberer, braucht keine Updates und lässt sich wunderbar in die Kurzbefehle-App oder in Automatisierungen einbinden.
Hier mal die Schnellanleitung für die Bastler unter euch.

Das Skript
Ihr braucht nur einen Texteditor. Erstellt eine neue Datei (Reintext), nennt sie beispielsweise wol.py und packt folgenden Code rein.
import socket
import struct
def wake_on_lan(mac_address):
mac_clean = mac_address.replace(":", "").replace("-", "")
if len(mac_clean) != 12:
print(f"Fehler: Adresse '{mac_address}' ungültig.")
return
data = b'\xFF' * 6 + (bytes.fromhex(mac_clean) * 16)
with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as sock:
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
# Senden an die Broadcast-Adresse (Port 9 ist Standard für WoL, evtl anpassen!)
sock.sendto(data, ('255.255.255.255', 9))
print(f"Magic Packet wurde an {mac_address} gesendet!")
if __name__ == '__main__':
# EURE MAC-Addy unten eintragen!
TARGET_MAC = "1C:1F:17:40:1F:1B"
wake_on_lan(TARGET_MAC)
(Die MAC-Adresse müsst ihr natürlich durch die eures Ziel-Rechners ersetzen).
Einmal einrichten, nie wieder tippen
Wer – wie ich – faul ist, tippt das natürlich nicht jedes Mal. Erstellt einen neuen Kurzbefehl, wählt „Shell-Skript ausführen“ und kopiert den Befehl python3 nebst Pfadangabe zum Script dort rein. Das könnt ihr euch dann sogar in die Menüleiste legen oder per Spotlight aufrufen.

Screenshot
- 25W ultraschnelles kabelloses Laden: Lade dein iPhone 17 Pro in nur 22 Minuten auf 50% – schneller als...
- 160W Leistung in Air Pods Größe: Mit einer Leistungsdicchte von 1,35W/cm3 liefert dieses schlanke USB-C...
- 14 starke Anschlüsse für dein Setup: Ausgelegt für moderne Arbeitsplätze – mit 140W 10 Gbps USB-C...
Transparenz: In diesem Artikel sind Partnerlinks enthalten. Durch einen Klick darauf gelangt ihr direkt zum Anbieter. Solltet ihr euch dort für einen Kauf entscheiden, erhalten wir eine kleine Provision. Für euch ändert sich am Preis nichts. Partnerlinks haben keinerlei Einfluss auf unsere Berichterstattung.
Vielen Dank, wie immer hilfreich, ich war bisher so faul unter MacOS/Windows die WOL Funktion der Fritte zu nutzen. Tatsächlich nutze ich WOL eher unter IOS (iPad und iPhone) mit einer App. Klitzekleine Frage, gibt es sowas auch unter IOS?
Der technische Unterbau ist ja zumindest teilweise da, so dass man per Terminal-App auch das eine oder andere nachinstallieren kann. Ob das hier so klappt, kann ich nicht sagen, wäre aber vielleicht ein Ansatz, wenn man sich damit mal beschäftigen möchte. Aber da sollte man schon wenigstens halbwegs wissen, was man tut … 😉
Ähnlicher, aber nicht gleicher UseCase: Bei mir ist der Server ein Mac, auf dem in meinem Fall u. a. das Backend von Immich läuft. Den wecke ich bei Bedarf auf, z. B. wenn ich vom iPhone aus per Immich App Fotos gucken möchte.
Das geht ganz einfach über einen Kurzbefehl mit „Skript über SSH ausführen“-Aktivität, die die folgende Zeile ausführt: nohup caffeinate -i -s > /dev/null 2>&1 & exit
Ein zweiter Kurzbefehl lässt den Mac später wieder schlafen: killall caffeinate
Das funktioniert wunderbar, obwohl der Mac nicht per Kabel, sondern nur per WLAN im Netz hängt. Wer den Mac nicht wieder manuell „schlafbereit“ machen möchte, kann Caffeinate auch einen Parameter mitgeben, der steuert, wie lange der Mac mindestens wach bleiben soll.
Das wird hier noch zu „r/cashyslab“ and i like it! <3 Gern mehr solche Artikel und gern auch sowas wie “Das hosted Cashy auf seinem Server" oder “Das sind Cashys Must-Have-Apps“.
Finde es immer interessant, was andere so selber hosten, und wenn ich etwas nicht kenne, habe ich gleich mal etwas Neues zum Testen =)
Coole Sache … wobei ich ja eigentlich gern mit dem iPhone meinen Mac aufwecken würde, aber das geht damit mangels Python auf dem iPhone ja leider nicht.
Bisher nutze ich ein Bash Script mit „wakeonlan“ von jpoliv, was es über Homebrew gibt und lasse mir darüber auch gleich eine Toast Notification senden, wenn die Shares im Netzwerk verfügbar sind.
Auch wenn die Voraussetzung von wakeonlan jetzt keine all zu große Hürde ist, ein Script gänzlich ohne Dependencies, ist natürlich ein Argument.
Ich stehe auf, Bewegung hält fit!
Ich bin mir unsicher ob hier etwas anderes gemeint ist aber man kann unter Batterie -> Optionen -> „Ruhezustand bei Netzwerkzugriff beenden“ einstellen. Ich kann so immer mit VLC auf meinem Android TV oder auch von meinem iPhone und anderem MacBook auf Filme in einem Ordner auf meinem MacBook über SMB Dateifreigabe zugreifen – auch wenn es geschlossen oder im Standby ist. Das sollte auch mit allen anderen Dateiarten gehen. Bei „Ruhezustand bei Netzwerkzugriff beenden“ steht zwar nur was von iCloud und E-Mails aber SMB geht auch.
Ein Wolproxy könnte noch hilfreich sein, falls man nicht im gleichen Subnetz ist wie das zu weckende Gerät: https://www.green-it-software.com/wpdm-package/raspberry-pi-als-wolproxy-source-code/.
Da das Projekt als Quellcode vorliegt, lässt es sich auch auf anderen CPU-Architekturen kompilieren. Der vorliegende Quellcode reagiert explizit *nicht* auf das LAN-Interface, an das er sendet, sondern nur wenn das Paket aus einem Fremdnetz stammt. Ich hab das für mich noch etwas modifiziert, so dass es auf das eigene Subnetz reagiert, aber nur an weitere Netzwerkkarten sendet.