Estoy buscando una solución que inicie un temporizador cada vez que inicie sesión en el wifi de mi oficina y lo detenga cuando me vaya. Básicamente, debería registrar las horas que he pasado en la oficina. Soy consciente de que hay software de iOS para esto, pero me gusta la duración de la batería.
Una bonificación adicional sería si la solución pudiera registrar las horas en iCal automáticamente.
Respuestas:
ControlPlane podría ser algo que puede usar para lograr esto:
En pocas palabras, puede darle a ControlPlane una "fuente de evidencia", como
Luego realice un conjunto de acciones al ingresar (o salir) de un contexto particular, como
Mi opinión aquí es que si ControlPlane sabe cómo se llama el wifi de su oficina, puede crear reglas para que cuando se conecte a él, inicie una aplicación o un script de shell para comenzar a registrar sus horas. Luego, cuando se desconecta, detiene la aplicación o ejecuta otro script de shell para detener el registro de sus horas.
Me doy cuenta de que esta podría no ser la solución "bala de plata" que estabas buscando, pero podría valer la pena intentarlo. Aún tendrá que encontrar algún tipo de aplicación / script de temporizador, pero esa es probablemente la parte más fácil del problema :)
fuente
Puede usar el comando
networksetup -getairportnetwork <device>
para obtener el nombre de su red inalámbrica actualmente conectada (dónde está la ID del dispositivo de su aeropuerto, probablemente en1).A partir de ahí, puede usar launchd para programar un script que se ejecute cada 5 minutos más o menos, que obtendrá el nombre de la red inalámbrica a la que está conectado y se registrará cuando se conecte por primera vez a su wi-fi de trabajo.
Dependiendo de lo que desee, puede usar el mismo script para registrar otra entrada cuando advierte que ya no está conectado a su wi-fi de trabajo, o para publicar algún tipo de notificación (tal vez usando growl) en intervalos específicos. Algo parecido a "Llevo 9 horas trabajando - hora de irme a casa".
O puede usar las horas de inicio / finalización en un registro en ejecución y escribir otro script para analizarlo y crear algún tipo de informe.
Tengo fragmentos de este tipo de scripts, si el tiempo en el trabajo lo permite, agregaré algo aquí.
man launchd
Es bastante útil.fuente
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í:
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:
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:
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 :-)
fuente