OS X에서 로그인 / 로그 아웃시 스크립트를 실행하는 방법은 무엇입니까?


10

사용자 지정 렌더 팜 관리자를 구축하는 데 관심이 있으며 사용하지 않을 때 렌더 팜에 OS X 컴퓨터를 자동으로 추가하고 싶습니다.

사용자가 로그 아웃 한 후에 스크립트를 실행 한 다음 사용자가 로그인하면 중지하는 방법이 있습니까?

답변:


10

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

이 방법은 배포 또는 기타 방법에 권장되지 않지만 언급 한 질문과 같이 사용하는 경우 문제가되지 않습니다.


요세미티에서는 작동하지 않음
davidcondrey

5

10.4에서는 로그인 후크가 더 이상 사용되지 않아 시작되었습니다. 로그인시 스크립트를 실행하려면 다음과 같이 plist를 저장하십시오 ~/Library/LaunchAgents/test.plist. 를 실행하지 않아도 다음 로그인시로드됩니다 launchctl load ~/Library/LaunchAgents/test.plist.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN
http://www.apple.com/DTDs/PropertyList-1.0.dtd>
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>test</string>
    <key>ProgramArguments</key>
    <array>
        <string>say</string>
        <string>test</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

자세한 내용은 다음을 참조 man launchd.plist하고 ,이 블로그 게시물 .


링크 된 블로그 게시물에 따르면, 처음 로그인 할 때 plist가로드되고 시스템이 다시 시작될 때까지 계속로드됩니다. 로그인 할 때마다 launchd를 사용하여 스크립트를 실행하는 방법은 무엇입니까? 아니면 로그 아웃?
ShadSterling

-1

이러한 후크가 10.10에서 작동하려면 다음을 수행해야합니다.

  1. /etc/ttys파일을 엽니 다. Finder의 이동 메뉴에서 폴더로 이동을 선택하고을 입력 /etc/한 다음 이동을 클릭하십시오.

  2. 결과 창 ttys에서 원하는 텍스트 편집기 (예 : TextEdit) 에서 파일을 엽니 다 .

  3. 다음과 같은 줄을 찾으십시오.

    console "/System/Library/CoreServices/loginwindow.app/Contents/MacOS/loginwindow" vt100 on secure window=/System/Library/CoreServices/WindowServer onoption="/usr/libexec/getty std.9600"

  4. 다음과 같이 읽도록이 행을 편집하십시오 (이 행에 중단이 없음).

    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"

    즉, 두 번째 따옴표 ( ) 표시 바로 앞에 add ( 사용자가 로그인 할 때 실행할 스크립트의 전체 경로 )가 있습니다.-LoginHook /path/to/script/path/to/script"

  5. 파일을 저장하십시오.

이 파일을 편집하는 데 사용하는 텍스트 편집기가 위의 행을 둘 이상의 행으로 분리하지 않아야합니다.


또는 전체 지침을 따르십시오.

http://support.apple.com/en-ca/HT2420


요세미티에서는 작동하지 않음
davidcondrey
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.