Einen Mac aus der Ferne herunterfahren

Die kleinen Mac Minis eignen sich aufgrund ihrer kompakten Bauart und dem stabilen OS X auf UNIX-basis sehr gut als Homeserver. Bei mir steht ein alter PowerPC-Mac in der Ecke. Stromkabel rein, Ethernet-Kabel rein und gut ist.
Um den Mac zu starten drücke ich einfach auf den Power-Knopf und verzichte auf die WakeOnLAN-Funktion.

Bloß das Herunterfahren hat mir eine Zeit lang Kopfzerbrechen bereitet, denn drückt man den Ein-/Ausschalter, geht der Mac einfach nur in den Ruhezustand — ich wollte ihn aber vollständig herunterfahren.

Die schnelle Lösung ist, sich mit einem anderen Mac über die „Bildschirmfreigabe“ einzuloggen und ihn dann über die GUI herunterzufahren. Aber extra einen anderen Rechner hochfahren um einen anderen herunterzufahren kam für mich nicht in Frage. Das muss doch auch einfacher gehen!

Und in der Tat, es geht einfacher. Bei meiner Recherche bin ich auf zwei Möglichkeiten gestoßen:

  1. Mac per Programm herunterfahren
  2. Mac per Webseitenaufruf herunterfahren

Mac per Programm herunterfahren

Um den Mac mit nur einem Mausklick herunterfahren zu können, bedarf es zwei verschiedener Programme:
eines auf dem entfernten Mac, welches von extern aufgerufen wird und den Befehl ausführt und
eines auf dem lokalen Mac.

Das remote Programm

In den AppleScript-Editor fügt man folgenden Quelltext ein und speichert diesen als „ShutDown.app“ im Programme-Ordner ab:

do shell script "shutdown -h now" password "password" with administrator privileges

Das an dieser Stelle einzugebende Passwort ist das des auf dem remote Mac eingeloggten Nutzers. Damit holt man sich die Rechte den Mac auch herunterzufahren, wenn noch Programme laufen und diese gegebenenfalls Rückfragen stellen. Ansonten gäbe es einen TimeOut und der ShutDown fände gar nicht statt.

AppleScript-Programm freischalten

Damit sich das eben erstellte Programm auch von außen, also remote, aufrufen lässt, muss in den Systemeinstellungen „Sharing“ noch der Punkt „Entfernte Apple-Events“ aktiviert werden.

Das lokale Programm

Nun begeben wir uns wieder auf unseren lokalen Mac und erstellen im AppleScript-Editor ein weiteres Programm mit folgendem Code:

set s to "eppc://user:password@remotemac.local/Finder?uid=502" using terms from application "Finder"
tell application s to open application file "Macintosh HD:Applications:ShutDown.app"
end using terms from

Die hier anzugebenden Benutzerdaten sind wieder die der Remotemaschine. Darauf achten auch den Namen des Macs im Netzwerk korrekt anzugeben und die entsprechende UserID (uid). Um die uid zu bestimmen, im Terminal des entfernten Macs den Befehl „id“ eingeben.

…fertig!

Das eben erstellte Programm kann man jetzt per Doppelklick starten und der entfernte Mac fährt herunter — Zauberei!

Man spart sich mit dieser Lösung zumindest den Umweg über die Bildschirmfreigabe und das Herumgeklicke auf der Oberfläche. Aber eigentlich wollte ich mich ja nicht an einen Computer setzen müssen um den Homeserver herunterzufahren.

Also habe ich noch diese Lösung gefunden:

Mac per Webseitenaufruf herunterfahren

Jeder Mac ist von Haus aus mit einem Apache-Webserver mit PHP ausgestattet. Hat man in den Systemeinstellungen „Sharing“ den Punkt „Web-Sharing“ aktiviert, kann man über http://remotemac.local/~Benutzername/ darauf zugreifen und sich die dort hinterlegten Webseiten anschauen.

Um den Mac über den Aufruf einer Webseite herunterfahren zu können, ist ein wenig mehr Fummelei zur Einrichtung nötig, als bei dem beiden Programmdateien von oben.
Aber der Reihe nach:

Herunterfahren via PHP-Script

Auf dem Remote Mac erstellen wir uns ein PHP-Script mit folgendem Inhalt:

<?php
 	echo shell_exec("sudo whoami");
 	// shell_exec("sudo /sbin/shutdown -h now");
?>

Dieses speichern wir als ShutDown.php im Websites-Verzeichnis des angemeldeten Benutzers ab.

Die Datei rufen wir jetzt im Browser auf: http://127.0.0.1/~Benutzername/ShutDown.php um zu erfahren unter welchem Benutzernamen der Apache läuft. In meinem Fall ist das „_www“.

Rechtevergabe

Nun öffnen wir über das Terminal die sudoers-Datei mittels „visudo“ auf (einfach „visudo“ eingeben) und geben dem Webserver-Benutzer mit folgender Zeile das Recht den Shutdown-Befehl aufzurufen:

_www ALL=NOPASSWD: /sbin/shutdown

Datei speichern und das PHP-Script abändern, dass nur noch das hier drin steht:

<?php
 	shell_exec("sudo /sbin/shutdown -h now");
?>

ShutDown-Script testen

Testweise das Script jetzt einmal im Browser aufrufen und die Verbindung der Bildschirmfreigabe sollte zusammenbrechen und der Mac herunterfahren.

…fertig!

Hat das geklappt, kann man die Webseite zum Beispiel vom Handy aus aufrufen und der Mac fährt herunter. Ich habe die Webseite des Remote Macs noch ein wenig aufgehübscht und mir ein schönes Icon dazu erstellt. Die Webseite habe ich mir dann als Lesezeichen zum Homescreen hinzugefügt und kann jetzt bequem vom Sofa aus den Server herunterfahren.

Weitere Möglichkeiten

Man kann sich jetzt natürlich noch weitere Scripte für Neustarten oder Hochfahren per WakeOnLAN einrichten und diese dann vom Handy aus aufrufen (WakeOnLAN ist da aber noch etwas frickeliger) aber mir reicht es den Server herunterfahren zu können ohne mich erst anmelden zu müssen.

Randnotizen, Sicherheit

Es gilt dabei natürlich zu beachten, dass der Webserver des remote Macs nicht von außerhalb erreichbar sein sollte! Sonst kann nämlich jeder Hans & Franz euren Mac herunterfahren und ihr kommt aus dem Staunen nicht mehr raus 😉

0 0 Bewertungen
Gesamtbewertung
Dieser Artikel ist auch im Buch @Bastianoso — Eine Blog-Zeitreise von 2005 bis 2013 erschienen.
Kommentarbenachrichtigungen
Benachrichtige mich bei
1 Kommentar
älteste
neueste meiste Bewertungen
Inline Feedbacks
View all comments