O Mac OS X atualiza um arquivo em /Library/Preferences/SystemConfiguration/
chamado preferences.plist
. Ele atualiza uma chave chamada CurrentSet
para o UUID do local atual (cada local recebe um UUID quando é criado). Você pode determinar o nome desse Local procurando a chave UserDefinedName
no dicionário com o mesmo nome como o UUID.
Exemplo de script:
#! /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
Exemplo do LaunchAgent para executar o script acima sempre que o local for alterado:
<?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>
Preencha o caminho para o script, dê a ele um identificador e salve-o com o mesmo nome (por exemplo, local.lajuette.location
deve ser um arquivo chamado local.lajuette.location.plist
). Copie este arquivo para ~/Library/LaunchAgents
e execute launchctl load ~/Library/LaunchAgents/name.of.plist.here.plist
. Com os arquivos de amostra, abra o Console.app e verifique a linha: "DATE = > No Office" ou "DATE = > Fora do Escritório" de acordo.
Você pode querer verificar: Como posso obter um script para ser executado todos os dias no Mac OS X para obter mais informações sobre como carregar e executar seu script usando o launchd se você não tiver certeza.