Come posso tenere automaticamente traccia degli orari di ufficio quando mi collego al Wi-Fi del mio ufficio?


8

Sto cercando una soluzione che avvii un timer ogni volta che accedo al mio ufficio wifi e lo interrompe quando me ne sono andato. Dovrebbe essenzialmente registrare le ore che ho trascorso in ufficio. Sono consapevole che esiste un software iOS per questo, ma mi piace il tempo della batteria così com'è.

Un ulteriore vantaggio sarebbe se la soluzione potesse registrare automaticamente le ore in iCal.


Interessante, non conosco un'app in grado di farlo ...
Martin Marconcini

Suppongo che il tuo lavoro abbia un nome wifi diverso / distinto (essid) rispetto a quello che usi una casa?
alesplin,

@alesplin Sì davvero.
yusf

Potrei avere un po 'di un hack che può essere modificato per questo. Lo guarderò e vedrò.
alesplin,

@alesplin Come è andata?

Risposte:


9

ControlPlane potrebbe essere qualcosa che puoi usare per raggiungere questo obiettivo:

ControlPlane determina dove ti trovi o cosa stai facendo in base a una serie di fonti di prove disponibili e quindi riconfigura automaticamente il tuo Mac in base alle tue preferenze. Le fonti di prova possono includere la posizione corrente, le reti WiFi visibili, i dispositivi USB collegati, le applicazioni in esecuzione e altro. Puoi persino scrivere le tue fonti di prova usando gli script di shell!

In breve, puoi dare a ControlPlane una "fonte di prova", come ad esempio

  • WiFi, reti entro il raggio di copertura o basate sulla rete a cui sei attualmente connesso

inserisci qui la descrizione dell'immagine

Quindi eseguire una serie di azioni quando si entra (o si esce) da un contesto particolare, ad esempio

  • Apri qualsiasi file, incluso l'avvio delle applicazioni
  • Esegui uno script, come AppleScript o shell script

inserisci qui la descrizione dell'immagine

Il mio pensiero qui è che se ControlPlane sa come si chiama il tuo wifi dell'ufficio, puoi creare regole in modo che quando ti connetti ad esso avvii un'applicazione o uno script di shell per iniziare a registrare le tue ore. Quindi, quando ci si disconnette, si interrompe l'applicazione o si esegue un altro script di shell per interrompere la registrazione delle ore.

Mi rendo conto che questa potrebbe non essere la soluzione "proiettile d'argento" che stavi cercando, ma potrebbe valere la pena provare. Dovrai comunque trovare una sorta di app / script timer, ma questa è probabilmente la parte più semplice del problema :)


Grazie per la risposta! ControlPlane sembra inizialmente un po 'eccessivo (era alla ricerca di una soluzione più leggera) ma lo proverò una volta che avrò il tempo di imparare AppleScript.
yusf,

@yusf Nessun problema. Spero che ti sia d'aiuto. Sarei anche interessato alla tua soluzione finale quando ci arriverai! :-)
binarybob,

4

Puoi usare il comando networksetup -getairportnetwork <device>per ottenere il nome della tua rete wireless attualmente connessa (dove si trova l'ID del dispositivo del tuo aeroporto - probabilmente en1).

Da lì, puoi utilizzare launchd per pianificare l'esecuzione di uno script ogni 5 minuti circa, che otterrà il nome della rete wireless a cui sei connesso e accedi quando ti connetti per la prima volta al tuo lavoro Wi-Fi.

A seconda di ciò che desideri, puoi utilizzare lo stesso script per registrare un'altra voce quando nota che non sei più connesso al tuo lavoro Wi-Fi o per pubblicare una sorta di notifica (forse usando il ringhio) a intervalli specifici. Qualcosa del genere "Sono al lavoro da 9 ore - è ora di tornare a casa".

Oppure puoi utilizzare l'ora di inizio / fine in un registro in esecuzione e scrivere un altro script per analizzarlo e creare una sorta di rapporto.

Ho in giro frammenti di questi tipi di script, se il tempo al lavoro lo consente, aggiungerò qualcosa qui.

man launchd è abbastanza utile.


Grazie @alespin! Si apre per un buon approccio minimale. :)
yusf

1

Ecco un'altra opzione per le persone che cercano di farlo.

Invece di eseguire un comando ogni 5 minuti, è possibile eseguirlo ogni volta che la cartella /Library/Preferences/SystemConfiguration/cambia. Questo generalmente accade solo quando si verifica una sorta di cambio di rete.

Puoi farlo usando Lingon o creare il tuo programma di avvio che assomiglierebbe a questo:

<?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>

Ovviamente vorresti sostituire /path/to/your/script.shil percorso effettivo.

Tieni presente che potrebbe essere necessario includere un "sleep 10" vicino all'inizio dello script per dare al Mac la possibilità di apportare tutte le modifiche una volta avvenuta una modifica della rete.

Inoltre, il modo più semplice per ottenere il nome (SSID) della rete AirPort a cui sei connesso è:

airport -I | awk -F': ' '/ SSID/{print $NF}'

Il airportcomando è disponibile /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airportin 10.8 (e credo 10.7 e 10.6)

In genere lo collego a / usr / local / bin:

ln -s /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport /usr/local/bin/airport

potresti aver bisogno di sudoquel comando, a seconda di come è configurato / usr / local / bin /.

Ultimo ma non meno importante, devi considerare cosa fare quando metti il ​​laptop in modalità di sospensione. Ad esempio, se sei in ufficio dalle 9 alle 5 e dormi il tuo laptop alle 5, vuoi registrarlo anche tu, giusto? Altrimenti come saprai quando te ne sei andato?

Per questo consiglio SleepWatcher 2.2 che è disponibile da http://www.bernhard-baehr.de (gratuito, incluso il codice sorgente). Ciò ti consentirà di eseguire uno script di shell ogni volta che il tuo Mac si sveglia o dorme.

L'unica altra considerazione è cosa fare se ci si disconnette o si spegne il computer, invece di dormirlo. Non ho una buona risposta per quello. Teoricamente un LogoutHook sarebbe la risposta, ma quelli sembrano inaffidabili, specialmente su shutdown vs logout.

Un suggerimento completamente indipendente

Hai detto che hai un dispositivo iOS. Forse un modo per risolvere questo problema sarebbe quello di creare un promemoria ogni volta che arrivi o lasci il lavoro. Quando il promemoria si spegne, attiva Siri e pronuncia "Ricorda lavoro lasciato alle 17:00" o "Ricorda lavoro arrivato alle 9:00" e Siri ne prenderà nota. Non elegante né completamente automatico, ma se stavo guardando il monitoraggio delle ore fatturabili, non mi dispiacerebbe un po 'di ridondanza :-)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.