질문 : 특정 위치를 입력 할 때 스크립트를 시작하고 유지하도록 LaunchAgent를 구성하는 방법이 있습니까?
예 : "Office"위치로 전환 할 때 필요한 SSH 터널을 여는 스크립트를 시작하는 LaunchAgent를 트리거하려고합니다.
질문 : 특정 위치를 입력 할 때 스크립트를 시작하고 유지하도록 LaunchAgent를 구성하는 방법이 있습니까?
예 : "Office"위치로 전환 할 때 필요한 SSH 터널을 여는 스크립트를 시작하는 LaunchAgent를 트리거하려고합니다.
답변:
맥 OS X가있는 파일을 업데이트 /Library/Preferences/SystemConfiguration/
라고합니다 preferences.plist
. CurrentSet
현재 위치의 UUID에 호출 된 키를 업데이트합니다 (각 위치에는 생성 될 때 UUID가 제공됨). UserDefinedName
사전에서 UUID와 동일한 이름을 가진 키를 찾아 해당 위치의 이름을 확인할 수 있습니다 .
스크립트 예 :
#! /bin/bash
# Proof of Concept Script to check if the location changed.
CURRENT_LOCATION=`/usr/libexec/PlistBuddy -c "Print :CurrentSet" /Library/Preferences/SystemConfiguration/preferences.plist | sed 's/\/Sets\///'`
CURRENT_LOCATION_NAME=`/usr/libexec/PlistBuddy -c "Print :Sets:$CURRENT_LOCATION:UserDefinedName" /Library/Preferences/SystemConfiguration/preferences.plist`
# If location is the one we want:
# Logger puts the message into syslog
if [ $CURRENT_LOCATION_NAME == "Office" ]; then
logger "`date` => In the Office"
#Commands to set up SSH Tunnel among others
else
# If the location is not the one we want: Undo whatever we have done.
logger "`date` => Out of Office"
#Commands here for when you leave the office location
fi
위치가 변경 될 때마다 위의 스크립트를 실행하는 LaunchAgent 예 :
<?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>local.IDENTIFIER_HERE.SOMETHING</string>
<key>OnDemand</key>
<true/>
<key>Program</key>
<string>/PATH/TO/SCRIPT</string>
<key>WatchPaths</key>
<array>
<string>/Library/Preferences/SystemConfiguration/preferences.plist</string>
</array>
</dict>
</plist>
스크립트의 경로를 채우고 식별자를 지정하고 동일한 이름으로 저장하십시오 (예 : local.lajuette.location
파일 이름이어야 함 local.lajuette.location.plist
). 이 파일을 복사하여 ~/Library/LaunchAgents
에 실행하십시오 launchctl load ~/Library/LaunchAgents/name.of.plist.here.plist
. 샘플 파일을 사용하여 Console.app를 열고 "DATE => 부재 중"또는 "DATE => 부재 중"행을 확인하십시오.
체크 아웃 할 수 있습니다 : 확실하지 않은 경우 launchd를 사용하여 스크립트를로드하고 실행하는 방법에 대한 자세한 내용을 보려면 Mac OS X에서 매일 스크립트를 실행하려면 어떻게해야합니까 ?