So schließen Sie eine Anwendung auf dem Deckel und schließen Sie sie in OS X

2312
Maxim V. Pavlov

Ich habe ein MacBook Air. Ich verwende häufig den RDP-Client von Microsoft, um eine Verbindung zu einer virtuellen Arbeitsstation herzustellen. Diese RDP-Sitzung muss automatisch geschlossen werden (RDP beenden), wenn ich den Deckel schließe, bevor OS X in den Ruhezustand wechselt.

Wie kann diese Funktionalität erreicht werden?

4
Welche OS X-Anwendung verwenden Sie, um eine Verbindung zur Windows-Box herzustellen? Verwenden Sie http://www.microsoft.com/mac/remote-desktop-client? Colyn1337 vor 11 Jahren 0
Ja, Remote Desktop Client von Microsoft. Maxim V. Pavlov vor 11 Jahren 0
Möglicherweise möchten Sie diese Frage auf der Website http://apple.stackexchange.com/ stellen. Jemand hier weiß vielleicht, ich würde mir vorstellen, dafür ein benutzerdefiniertes Schlaf-Skript erstellen zu müssen, das nach dem RDP-Programm sucht und es schließt. Was Sie erreichen wollen, ist das Gegenteil von dem, für das der Schlaf gedacht war. Colyn1337 vor 11 Jahren 0
@ Colyn1337 OS X-Fragen sind hier zum Thema. Bitte raten Sie den Benutzern nicht, ihre Frage an anderer Stelle zu posten, da Cross-Posting nicht zulässig ist. Maxim kann die Frage zu Ask Different "migriert" haben, wenn innerhalb von ein paar Tagen keine passende Antwort gefunden wird. Danke für dein Verständnis. slhck vor 11 Jahren 0
@slhck Ich habe nie gesagt, dass es nicht so ist. Ich habe einfach eine spezifischere Community empfohlen. Colyn1337 vor 11 Jahren 0
Warum muss die Verbindung vor dem Schlafengehen getrennt werden? Der Server trennt die Verbindung automatisch, wenn er erkennt, dass die Verbindung getrennt wurde, und der Client stellt die Verbindung wieder her, wenn Ihr Mac aufwacht. Darth Android vor 11 Jahren 0
@ Colyn1337 Denken Sie daran, dass dies zwar eine spezifischere Community ist, aber es auch weniger Leute gibt. Außerdem sind die Gemeinschaften selbst nicht getrennt. Ich bin sicher, dass viele Leute sowohl Ask Different als auch SuperUser durchsuchen, wenn auch nicht die Mehrheit von ihnen. Darth Android vor 11 Jahren 0
@DartAndroid, die Situation ist so, dass ich nicht sicher bin, wer um den Laptop sein wird, wenn ich aus dem Schlaf aufwache. Was ist, wenn es die Leute sind, die bereit sind, etwas zu finden, das sich wirklich auf einer Remote-RDP-Zugriffsmaschine befindet? Ich bin mir sicher, dass die RDP-Aktion für den Deckel auf den Deckel fällt, und ich bin mir sicher, dass die Leute in diesem Fall nicht einmal wissen, dass ich RDP auf den ersten Blick verwendete. Ich weiß, dass sich das seltsam anhört, aber das ist ein reales Szenario, auf das ich vorbereitet sein muss. Maxim V. Pavlov vor 11 Jahren 0

1 Antwort auf die Frage

6
slhck

Es gibt eine Reihe von Tools, mit denen Sie Änderungen des Stromstatus von OS X abfangen können:

Sleep Watcher Installation

Lassen Sie uns dies mit Sleep Watcher versuchen. Laden Sie das Tool von der Homepage von Bernhard Baehr herunter und befolgen Sie die Installationsanweisungen: Wenn Sie den Download auf Ihrem Desktop ausgepackt haben, rufen Sie die folgenden Befehle in einem Terminalfenster auf:

sudo mkdir -p /usr/local/sbin /usr/local/share/man/man8 sudo cp ~/Desktop/sleepwatcher_2.2/sleepwatcher /usr/local/sbin sudo cp ~/Desktop/sleepwatcher_2.2/sleepwatcher.8 /usr/local/share/man/man8 

Dadurch werden die sleepwatcherBinärdatei und die Manpages installiert . Sie werden aufgefordert, ein Administratorkennwort einzugeben.

Schlafskript erstellen

Nun erstellen wir ein Schlaf-Skript namens ~/.sleep. Es enthält die Befehle, die ausgeführt werden, wenn die Maschine in den Ruhezustand versetzt wird (dh wenn der Deckel geschlossen wird).

touch ~/.sleep open -e !$ 

Fügen Sie in dieser Datei Folgendes hinzu:

osascript -e 'tell application "Remote Desktop Connection" to quit' 

Dadurch wird die Microsoft RDP-Anwendung über AppleScript-Befehle beendet. Sie können dies mit jeder Anwendung tun, solange Sie den Namen entsprechend dem Titel ändern. Speicher die Datei. Jetzt müssen wir es ausführbar machen:

chmod +x ~/.sleep 

Das Sleep-Skript testen

Testen Sie nun Ihr Skript, indem Sie zuerst das RDP-Programm starten und dann in Terminal Folgendes ausführen:

/usr/local/sbin/sleepwatcher --verbose --sleep ~/.sleep 

Dadurch wird nichts ausgegeben. Lassen Sie also sowohl RDP als auch den Sleep Watcher laufen, und schließen Sie dann den Deckel Ihres MacBook. Warten Sie ein paar Sekunden, bis es wirklich schläft. Dann weck es wieder auf. Wurde RDP geschlossen? Großartig! Ist etwas schiefgegangen? Sehen Sie sich die Ausgabe des sleepwatcherBefehls an, um einen Hinweis darauf zu erhalten, wo er fehlgeschlagen ist.

Sie können den Sleep Watcher jetzt abbrechen, indem Sie CtrlCin Terminal drücken .

Skript im Hintergrund ausführen

Damit der Sleep Watcher immer ausgeführt werden kann, müssen Sie ihn zu einem LaunchDaemon machen. Erstellen Sie eine neue Konfigurationsdatei, indem Sie die Beispielkonfiguration und rc-scripts kopieren.

sudo cp ~/Desktop/sleepwatcher_2.2/config/de.bernhard-baehr.sleepwatcher-20compatibility.plist /Library/LaunchDaemons/de.bernhard-baehr.sleepwatcher.plist sudo cp ~/Desktop/sleepwatcher_2.2/config/rc.* /etc 

Laden Sie nun die Konfigurationsdateien mit launchd:

sudo launchctl load /Library/LaunchDaemons/de.bernhard-baehr.sleepwatcher.plist 

Das ist alles was du brauchst. Jetzt wird die .sleepDatei immer ausgeführt, wenn Sie Ihren Mac schlafen.

Seit der Bereitstellung dieser wunderbaren Antwort hat Microsoft den Namen der Anwendung geändert. Der korrekte Aufruf von osascript lautet jetzt: `osascript -e 'sagt der Anwendung" Remotedesktopverbindung ", um das Programm zu beenden Maxim V. Pavlov vor 8 Jahren 0
@ MaximV.Pavlov Danke für den Kommentar, aber ist das nicht was meine Antwort schon sagt? slhck vor 8 Jahren 0
Mein schlechtes, wahrscheinlich hatte ich etwas anderes, und Sie haben anfangs eine korrekte Benennung vorgenommen. Ich rufe jetzt übrigens zwei Osascripts an. Einer, um Microsoft Remote Desktop zu schließen, und der andere, um tatsächliche Sitzungsfenster zu schließen, die unter dem Namen "Remotedesktopverbindung" bezeichnet werden. Maxim V. Pavlov vor 8 Jahren 0