Aqui está outra opção para pessoas que tentam fazer isso.
Em vez de executar um comando a cada 5 minutos, você pode executá-lo sempre que a pasta /Library/Preferences/SystemConfiguration/
mudar. Isso geralmente acontece apenas quando há algum tipo de alteração na rede.
Você pode fazer isso usando o Lingon ou criar seu próprio launchd, que seria algo como isto:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>AbandonProcessGroup</key>
<true/>
<key>Label</key>
<string>localhost.on_networkchange</string>
<key>ProgramArguments</key>
<array>
<string>/path/to/your/script.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>WatchPaths</key>
<array>
<string>/Library/Preferences/SystemConfiguration/</string>
</array>
</dict>
Obviamente, você gostaria de substituir /path/to/your/script.sh
o caminho real.
Observe que você pode precisar incluir um 'sleep 10' próximo ao início do script para dar ao Mac a chance de fazer todos os ajustes assim que ocorrer uma alteração na rede.
Além disso, a maneira mais fácil de obter o nome (SSID) da rede AirPort à qual você está conectado é:
airport -I | awk -F': ' '/ SSID/{print $NF}'
O airport
comando pode ser encontrado /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport
em 10.8 (e acredito que 10.7 e 10.6)
Geralmente, eu o vinculo a / usr / local / bin:
ln -s /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport /usr/local/bin/airport
você pode precisar sudo
desse comando, dependendo de como o seu / usr / local / bin / está configurado.
Por último, mas não menos importante, você precisa considerar o que fazer quando colocar o laptop em modo de suspensão. Por exemplo, se você está no escritório das 9h às 17h e dorme seu laptop às 5h, também deseja gravar isso, certo? Caso contrário, como você saberá quando saiu?
Para isso, recomendo o SleepWatcher 2.2, disponível em http://www.bernhard-baehr.de (gratuito, código fonte incluído). Isso permitirá que você execute um script de shell sempre que o Mac acordar ou dormir.
A única outra consideração é o que fazer se você fizer logoff ou desligar o computador, em vez de suspendê-lo. Eu não tenho uma boa resposta para essa. Teoricamente, um LogoutHook seria a resposta, mas eles parecem não confiáveis, especialmente no desligamento e no logout.
Uma sugestão completamente não relacionada
Você mencionou que possui um dispositivo iOS. Talvez uma maneira de resolver esse problema seja criar um lembrete para sempre que você chegar ou sair do trabalho. Quando o lembrete disparar, ative a Siri e diga "Lembre-se de deixar o trabalho às 17:00" ou "Lembre-se de chegar ao trabalho às 9:00" e o Siri fará uma anotação. Não é elegante nem completamente automático, mas se eu estivesse olhando para rastrear horas faturáveis, não me importaria com um pouco de redundância :-)