4

У меня есть MacBook Air. Я часто использую RDP-клиент Microsoft для подключения к виртуальной рабочей станции. Мне нужно, чтобы этот сеанс RDP был автоматически закрыт (выход из RDP), когда я закрываю крышку, прежде чем OS X перейдет в спящий режим.

Как можно достичь этой функциональности?

1 ответ1

7

Есть несколько инструментов, которые позволяют вам перехватывать изменения состояния питания OS X:

  • Сценарий и Power Manager, как коммерческие, так и инструменты с графическим интерфейсом.
  • Sleep Watcher, бесплатный и с открытым исходным кодом, но с командной строкой.

Установка Sleep Watcher

Давайте попробуем это с Sleep Watcher. Загрузите инструмент с домашней страницы Bernhard Baehr и следуйте инструкциям по установке: если вы распаковали загрузку на рабочий стол, выполните следующие команды из окна терминала:

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

Это установит бинарный файл sleepwatcher и справочные страницы. Вам будет предложено ввести пароль администратора.

Создание сценария сна

Теперь давайте создадим скрипт сна с именем ~/.sleep . Он будет содержать команды, которые запускаются, когда машина переводится в спящий режим (т. Е. Когда крышка закрывается).

touch ~/.sleep
open -e !$

В этом файле добавьте следующее:

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

Это приведет к выходу из приложения Microsoft RDP через команды AppleScript. Вы можете сделать это с любым приложением, если вы измените имя в соответствии с его названием. Сохраните файл. Теперь нам нужно сделать его исполняемым:

chmod +x ~/.sleep

Тестирование сценария сна

Теперь протестируйте ваш скрипт, сначала запустив программу RDP, а затем запустив в терминале следующее:

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

Это ничего не выведет, поэтому оставьте RDP и Sleep Watcher включенными, затем закройте крышку MacBook. Подождите пару секунд, пока он действительно не заснет. Тогда проснись снова. RDP закрылся? Большой! Что-то пошло не так? Посмотрите на вывод команды sleepwatcher чтобы получить подсказку о том, где это не удалось.

Теперь вы можете отменить режим Sleep Watcher, нажав Ctrl C в терминале.

Запуск сценария в фоновом режиме

Для того, чтобы Sleep Watcher работал постоянно, вы должны сделать его LaunchDaemon. Создайте новый файл конфигурации, скопировав пример конфигурации и rc -scripts.

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

Теперь загрузите файлы конфигурации с помощью launchd:

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

Это все, что вам нужно. Теперь файл .sleep всегда будет выполняться всякий раз, когда вы спите на своем Mac.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .