Come posso tenere traccia automaticamente delle ore di ufficio quando mi collego al mio ufficio Wi-Fi?

8

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

Il bonus extra sarebbe se la soluzione potesse registrare automaticamente le ore in iCal.

    
posta yusf 03.04.2012 - 10:46
fonte

3 risposte

9

ControlPlane potrebbe essere qualcosa che puoi usare per realizzare questo:

ControlPlane determines where you are or what you are doing based on a number of available evidence sources and then automatically reconfigures your Mac based on your preferences. Evidence sources can include your current location, visible WiFi networks, attached USB devices, running applications and more. You can even write your own evidence sources using shell scripts!

In poche parole, puoi dare a ControlPlane una "fonte di prova", come

  • WiFi, either networks within range or based on the network you are currently connected to

Quindieseguiunaseriediazioniquandoinserisci(oesci)uncontestoparticolare,come

  • Openanyfile,includingstartingApplications
  • Runascript,suchasAppleScriptorshellscript

Il mio pensiero qui è che se ControlPlane sa che cosa viene chiamato il tuo ufficio wifi, puoi creare regole in modo che quando ti colleghi ad esso, avvia un'applicazione o uno script di shell per iniziare a registrare le tue ore. Quindi, quando 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 qualche tipo di app / script per il timer, ma questa è probabilmente la parte più facile del problema:)

    
risposta data 09.04.2012 - 21:56
fonte
4

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

Da lì, puoi utilizzare launchd per programmare uno script da eseguire ogni 5 minuti circa, in modo da ottenere il nome della rete wireless a cui sei connesso e accedere quando ti connetti per la prima volta al Wi-Fi di lavoro.

A seconda di ciò che desideri, puoi usare lo stesso script per registrare un'altra voce quando ti accorgi che non sei più connesso al tuo lavoro wi-fi, o per pubblicare qualche tipo di notifica (magari usando il ringhio) su specifici intervalli. Qualcosa sulla falsariga di "Sono stato al lavoro per 9 ore - ora di andare a casa".

Oppure potresti utilizzare le ore di inizio / fine in un log in esecuzione e scrivere un altro script per analizzarlo e creare una sorta di rapporto.

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

man launchd è abbastanza utile.

    
risposta data 18.04.2012 - 20:43
fonte
1

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

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

Puoi farlo utilizzando Lingon o crea il tuo plist di lancio che sarebbe simile 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.sh con il percorso attuale.

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 sue modifiche una volta che è avvenuto un cambio di 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 comando airport può essere trovato a /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport in 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 sudo di quel comando, a seconda di come / usr / local / bin / è configurato.

Ultimo ma non meno importante, è necessario considerare cosa fare quando si mette il portatile a dormire. Ad esempio, se sei in ufficio dal 9-5 e dormi al computer portatile alle 5, vuoi registrare anche questo, giusto? Altrimenti come farai a sapere quando te ne sei andato?

Per questo raccomando SleepWatcher 2.2, disponibile dal link (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 si disconnette o si spegne il computer, invece di dormire. Non ho una buona risposta per quello. Teoricamente un LogoutHook sarebbe la risposta, ma quelli sembrano inaffidabili , in particolare su shutdown vs logout.

Un suggerimento completamente non correlato

Hai menzionato che hai un dispositivo iOS. Forse un modo per risolvere questo problema sarebbe creare un promemoria per ogni volta che si arriva o si lascia il lavoro. Quando il promemoria si attiva, attiva Siri e dì "Ricorda il lavoro lasciato alle 17:00" o "Ricorda che sei arrivato al lavoro alle 9:00" e Siri ne prenderà nota. Non elegante né completamente automatico, ma se guardassi il monitoraggio delle ore fatturabili, non mi dispiacerebbe un po 'di ridondanza: -)

    
risposta data 19.12.2012 - 06:56
fonte

Leggi altre domande sui tag