Aquí hay otra opción para las personas que intentan hacer esto.
En lugar de ejecutar un comando cada 5 minutos, puede ejecutarlo siempre que la carpeta /Library/Preferences/SystemConfiguration/
cambie. Esto generalmente ocurre solo cuando hay algún tipo de cambio de red.
Puede hacer esto utilizando Lingon o hacer su propia cuenta de launchd que se vería algo como esto:
<?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, deberías reemplazar /path/to/your/script.sh
a la ruta real.
Tenga en cuenta que es posible que deba incluir un 'sueño 10' cerca del inicio de la secuencia de comandos para darle a la Mac la oportunidad de realizar todos sus ajustes una vez que haya ocurrido un cambio de 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 comando airport
se puede encontrar en /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 suspensión. Por ejemplo, si está en la oficina de 9 a 5 y duerme su computadora portátil a las 5, también quiere grabar eso, ¿verdad? De lo contrario, ¿cómo sabrás cuándo te fuiste?
Para eso recomiendo SleepWatcher 2.2, que está disponible en enlace (gratis, código fuente incluido). Eso te permitirá ejecutar un script de shell siempre que tu Mac se active o desactive.
La única otra consideración es qué hacer si cierra la sesión o apaga su computadora, en lugar de dormirla. No tengo una buena respuesta para eso. Teóricamente, una LogoutHook sería la respuesta, pero no parecen ser fiables. , especialmente en el cierre vs cierre de sesión.
Una sugerencia completamente no relacionada
Has mencionado que tienes un dispositivo iOS. Quizás una forma de resolver este problema sería crear un recordatorio para cada vez que llegue o deje el trabajo. Cuando se apague el recordatorio, active Siri y diga "Recordar haber dejado el trabajo a las 5 pm" o "Recordar que llegó al trabajo a las 9 am" y Siri tomará nota de ello. No elegante ni completamente automático, pero si estuviera buscando el seguimiento de las horas facturables, no me importaría un poco de redundancia :-)