Aquí hay otra opción para las personas que intentan hacer esto.
En lugar de ejecutar un comando cada 5 minutos, puede ejecutarlo cada vez que /Library/Preferences/SystemConfiguration/
cambie la carpeta . Esto generalmente ocurre solo cuando hay algún tipo de cambio de red.
Puede hacer esto usando Lingon o hacer su propia lista de lanzamiento que se vería así:
<?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, querrás reemplazar /path/to/your/script.sh
el camino real.
Tenga en cuenta que es posible que deba incluir un 'sleep 10' cerca del inicio del script para que Mac pueda hacer todos sus ajustes una vez que se haya producido un cambio en la red.
Además, la forma más fácil de obtener el nombre (SSID) de la red AirPort a la que está conectado es:
airport -I | awk -F': ' '/ SSID/{print $NF}'
El airport
comando se puede encontrar /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport
en 10.8 (y creo que 10.7 y 10.6)
Generalmente lo vinculo a / usr / local / bin:
ln -s /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport /usr/local/bin/airport
es posible que necesite sudo
ese comando, dependiendo de cómo esté configurado / usr / local / bin /.
Por último, pero no menos importante, debe considerar qué hacer cuando pone su computadora portátil en reposo. Por ejemplo, si estás en la oficina de 9 a 5 y duermes tu computadora portátil a las 5, también quieres grabar eso, ¿verdad? De lo contrario, ¿cómo sabrá cuando se fue?
Para eso recomiendo SleepWatcher 2.2 que está disponible en http://www.bernhard-baehr.de (gratis, código fuente incluido). Eso te permitirá ejecutar un script de shell cada vez que tu Mac se despierte o duerma.
La única otra consideración es qué hacer si cierra la sesión o apaga la computadora, en lugar de apagarla. No tengo una buena respuesta para esa. Teóricamente, un LogoutHook sería la respuesta, pero parecen poco confiables, especialmente en el apagado frente al cierre de sesión.
Una sugerencia completamente no relacionada
Mencionaste que tienes un dispositivo iOS. Quizás una forma de resolver este problema sería crear un Recordatorio para cada vez que llegue o salga del trabajo. Cuando suene el recordatorio, active Siri y diga "Recuerde que dejó el trabajo a las 5 p. M." O "Recuerde que llegó al trabajo a las 9 a. M." Y Siri lo anotará. No es elegante ni completamente automático, pero si estuviera buscando rastrear horas facturables, no me importaría un poco de redundancia :-)