Есть несколько способов запуска сценариев при входе / выходе из системы в OS X , некоторые более поздние и применяются только к 10.5 и выше, некоторые довольно устарели, но самый быстрый из них - добавить Login Hook
.
Сначала создайте скрипт, который вы хотите запустить. Откройте Терминал и введите:
touch ~/script.sh
open -e !$
Это откроет текстовый редактор. Введите сценарий, например, со следующим содержанием:
#!/bin/sh
# insert your script here
Сохраните файл. В вашем терминале запустите:
chmod +x ~/script.sh
Это сделает файл исполняемым. Теперь давайте добавим это как хук:
sudo defaults write com.apple.loginwindow LoginHook /usr/local/bin/script.sh
Также есть Logout Hook
аналог:
sudo defaults write com.apple.loginwindow LogoutHook /usr/local/bin/script2.sh
Я протестировал это на OS X 10.6, и он должен работать даже до 10.8. Имейте в виду, что скрипт выполняется как root
и есть только один хук для входа и выхода соответственно.
Чтобы отменить все это, введите
sudo defaults delete com.apple.loginwindow LoginHook
sudo defaults delete com.apple.loginwindow LogoutHook
Обратите внимание, что этот метод не рекомендуется для развертывания или чего-либо еще, но если вы используете его только так, как указано в вашем вопросе, это не должно быть проблемой.
Хуки входа в систему устарели в 10.4 в пользу launchd. Чтобы запустить скрипт при входе в систему, сохраните этот лист как
~/Library/LaunchAgents/test.plist
. Он загружается при следующем входе в систему, даже если вы не запускаетеlaunchctl load ~/Library/LaunchAgents/test.plist
.Для получения дополнительной информации см.
man launchd.plist
И этот блог .источник
Чтобы эти хуки работали в 10.10, вам нужно сделать это:
Откройте
/etc/ttys
файл: в Finder выберите «Перейти к папке» в меню «Перейти», введите/etc/
, затем нажмите «Перейти».В появившемся окне откройте
ttys
файл в предпочитаемом вами текстовом редакторе (например, TextEdit).Ищите строку, которая гласит:
console "/System/Library/CoreServices/loginwindow.app/Contents/MacOS/loginwindow" vt100 on secure window=/System/Library/CoreServices/WindowServer onoption="/usr/libexec/getty std.9600"
Отредактируйте эту строку так, чтобы она читалась следующим образом (в этой строке нет разрывов):
console "/System/Library/CoreServices/loginwindow.app/Contents/MacOS/loginwindow -LoginHook /path/to/script" vt100 on secure window=/System/Library/CoreServices/WindowServer onoption="/usr/libexec/getty std.9600"
т.е. добавьте (где указан полный путь к сценарию, который вы хотите выполнить, когда пользователь входит в систему) непосредственно перед второй меткой quote ( ).
-LoginHook /path/to/script
/path/to/script
"
Сохраните файл.
Убедитесь, что текстовый редактор, который вы используете для редактирования этого файла, не разбивает строку выше на более чем одну строку.
или следуйте полной инструкции здесь:
http://support.apple.com/en-ca/HT2420
источник