¿Cómo puedo hacer un seguimiento automático de las horas de oficina cuando me conecto a mi oficina con Wi-Fi?

8

Estoy buscando una solución que inicie un temporizador cada vez que inicie sesión en el wifi de mi oficina y la detenga cuando me haya ido. Básicamente debería registrar las horas que he pasado en la oficina. Soy consciente de que hay un software iOS para esto, pero me gusta el tiempo de batería que tengo.

La bonificación adicional sería si la solución pudiera registrar las horas en iCal automáticamente.

    
pregunta yusf 03.04.2012 - 10:46

3 respuestas

9

ControlPlane puede ser algo que puede usar para lograr esto:

  

ControlPlane determina dónde se encuentra o qué está haciendo en función de una   Número de fuentes de evidencia disponibles y luego automáticamente   reconfigura tu Mac basado en tus preferencias Fuentes de evidencia pueden   incluye tu ubicación actual, redes WiFi visibles, USB conectado   Dispositivos, aplicaciones en ejecución y más. Incluso puedes escribir tu propio   fuentes de evidencia usando shell scripts!

En pocas palabras, puede darle a ControlPlane una "fuente de evidencia", como

  
  • WiFi, ya sea redes dentro del alcance o en función de la red en la que está   actualmente conectado a
  •   

Luegorealiceunconjuntodeaccionescuandoingrese(osalga)deuncontextoparticular,como

  
  • Abracualquierarchivo,incluidaslasaplicacionesiniciales
  •   
  • Ejecuteunscript,comoAppleScriptoshellscript
  •   

Lo que pienso aquí es que si ControlPlane sabe cómo se llama el wifi de su oficina, puede crear reglas para que cuando se conecte inicie una aplicación o script de shell para comenzar a registrar sus horas. Luego, cuando se desconecta, detiene la aplicación o ejecuta otro script de shell para dejar de registrar sus horas.

Me doy cuenta de que esta podría no ser la solución de "bala de plata" que buscabas, pero vale la pena intentarlo. Aún tendrás que encontrar algún tipo de aplicación / script de temporizador, pero esa es probablemente la parte más fácil del problema :)

    
respondido por el binarybob 09.04.2012 - 21:56
4

Puede usar el comando networksetup -getairportnetwork <device> para obtener el nombre de su red inalámbrica actualmente conectada (donde está el ID del dispositivo de su aeropuerto, probablemente en1).

Desde allí, puede usar launchd para programar un script para que se ejecute cada 5 minutos aproximadamente, lo que obtendrá el nombre de la red inalámbrica a la que está conectado y lo registrará cuando se conecte por primera vez a su trabajo wi-fi. p>

Dependiendo de lo que quieras, puedes usar el mismo script para registrar otra entrada cuando note que ya no estás conectado a tu trabajo wi-fi, o para publicar algún tipo de notificación (tal vez usando gruñido) en intervalos Algo como "He estado en el trabajo durante 9 horas: es 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 estos tipos de scripts, si el tiempo en el trabajo lo permite, agregaré algo aquí.

man launchd es bastante útil.

    
respondido por el alesplin 18.04.2012 - 20:43
1

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 :-)

    
respondido por el TJ Luoma 19.12.2012 - 06:56

Lea otras preguntas en las etiquetas