¿Cómo puedo hacer un seguimiento automático de las horas de oficina cuando me conecto al wifi de mi oficina?

8

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.

yusf
fuente
Interesante, no conozco una aplicación que pueda hacer esto ...
Martin Marconcini
¿Supongo que su trabajo tiene un nombre wifi (essid) diferente / distinto del que usa en su hogar?
alesplin
@alesplin Sí, de hecho.
yusf
Puede que tenga un truco que pueda modificarse para esto. Lo echaré un vistazo y lo veré.
alesplin 05 de
@alesplin ¿Cómo te fue?
yusf

Respuestas:

9

ControlPlane podría ser algo que puede usar para lograr esto:

ControlPlane determina dónde está o qué está haciendo en función de una serie de fuentes de evidencia disponibles y luego reconfigura automáticamente su Mac en función de sus preferencias. Las fuentes de evidencia pueden incluir su ubicación actual, redes WiFi visibles, dispositivos USB conectados, aplicaciones en ejecución y más. ¡Incluso puede escribir sus propias fuentes de evidencia utilizando scripts de shell!

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

  • WiFi, ya sea redes dentro del alcance o basadas en la red a la que está conectado actualmente

ingrese la descripción de la imagen aquí

Luego realice un conjunto de acciones al ingresar (o salir) de un contexto particular, como

  • Abra cualquier archivo, incluido el inicio de aplicaciones
  • Ejecute un script, como AppleScript o script de shell

ingrese la descripción de la imagen aquí

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

binarybob
fuente
¡Gracias por la respuesta! ControlPlane parece ser un poco exagerado al principio (estaba buscando una solución más liviana) pero lo probaré una vez que tenga tiempo de aprender AppleScript.
yusf
@yusf No hay problema. Ojalá te sirva de ayuda. ¡También estaría interesado en su solución final cuando llegue allí! :-)
binarybob
4

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.

alesplin
fuente
Gracias @alespin! Se abre para un buen enfoque minimalista. :)
yusf
1

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.shel 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 airportcomando se puede encontrar /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airporten 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 sudoese 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 :-)

TJ Luoma
fuente