Wie kann ich automatisch die Arbeitszeiten im Büro verfolgen, wenn ich mich mit meinem Büro-WLAN verbinde?

Ich suche nach einer Lösung, die einen Timer startet, wenn ich mich bei meinem Büro-WLAN anmelde, und ihn stoppt, wenn ich gehe. Es sollte im Wesentlichen die Stunden protokollieren, die ich im Büro verbracht habe. Mir ist bewusst, dass es dafür iOS-Software gibt, aber ich mag meine Akkulaufzeit so wie sie ist.

Ein zusätzlicher Bonus wäre, wenn die Lösung die Stunden automatisch in iCal protokollieren könnte.

Interessant, ich kenne keine App, die das kann…
Ich nehme an, Ihre Arbeit hat einen anderen/eindeutigen WLAN-Namen (essid) als Sie ein Zuhause verwenden?
@alesplin Ja, in der Tat.
Ich habe vielleicht einen kleinen Hack, der dafür modifiziert werden kann. Ich werde es mir ansehen und sehen.
@alesplin Wie ist es gelaufen?
Ich bin bei einer bevorstehenden Deadline bei der Arbeit hängengeblieben. Teilantwort unten.

Antworten (3)

ControlPlane könnte etwas sein, das Sie verwenden können, um dies zu erreichen:

ControlPlane bestimmt anhand einer Reihe verfügbarer Beweisquellen, wo Sie sich befinden oder was Sie tun, und konfiguriert Ihren Mac dann automatisch entsprechend Ihren Vorlieben neu. Beweisquellen können Ihren aktuellen Standort, sichtbare WLAN-Netzwerke, angeschlossene USB-Geräte, laufende Anwendungen und mehr umfassen. Sie können mithilfe von Shell-Skripten sogar Ihre eigenen Beweisquellen schreiben!

Kurz gesagt, Sie können ControlPlane eine "Beweisquelle" geben, z

  • WLAN, entweder Netzwerke in Reichweite oder basierend auf dem Netzwerk, mit dem Sie gerade verbunden sind

Geben Sie hier die Bildbeschreibung ein

Führen Sie dann eine Reihe von Aktionen aus, wenn Sie einen bestimmten Kontext betreten (oder verlassen), z

  • Öffnen Sie eine beliebige Datei, einschließlich des Startens von Anwendungen
  • Führen Sie ein Skript aus, z. B. AppleScript oder Shell-Skript

Geben Sie hier die Bildbeschreibung ein

Mein Gedanke hier ist, dass Sie, wenn ControlPlane weiß, wie Ihr Büro-WLAN heißt, Regeln erstellen können, sodass Sie beim Herstellen einer Verbindung eine Anwendung oder ein Shell-Skript starten, um Ihre Stunden zu protokollieren. Wenn Sie dann die Verbindung trennen, halten Sie die Anwendung an oder führen ein anderes Shell-Skript aus, um die Protokollierung Ihrer Stunden zu beenden.

Mir ist klar, dass dies vielleicht nicht die Wunderlösung ist, nach der Sie gesucht haben, aber es könnte einen Versuch wert sein. Sie müssen immer noch eine Art Timer-App/Skript finden, aber das ist wahrscheinlich der einfachere Teil des Problems :)

Danke für die Antwort! ControlPlane scheint zunächst etwas übertrieben zu sein (habe nach einer leichteren Lösung gesucht), aber ich werde es ausprobieren, sobald ich die Zeit habe, AppleScript zu lernen.
@yusf Kein Problem. Hoffentlich hilft es. Ich wäre auch an Ihrer endgültigen Lösung interessiert, wenn Sie dort ankommen! :-)

Sie können den Befehl verwenden networksetup -getairportnetwork <device>, um den Namen Ihres derzeit verbundenen drahtlosen Netzwerks zu erhalten (wobei die Geräte-ID Ihres Flughafens ist – wahrscheinlich en1).

Von dort aus können Sie launchd verwenden, um ein Skript zu planen, das etwa alle 5 Minuten ausgeführt wird und den Namen des drahtlosen Netzwerks erhält, mit dem Sie verbunden sind, und protokolliert, wenn Sie sich zum ersten Mal mit Ihrem Arbeits-WLAN verbinden.

Je nachdem, was Sie möchten, können Sie dann dasselbe Skript verwenden, um einen weiteren Eintrag zu protokollieren, wenn es feststellt, dass Sie nicht mehr mit Ihrem Arbeits-WLAN verbunden sind, oder um in bestimmten Abständen eine Art Benachrichtigung (möglicherweise mit Knurren) zu veröffentlichen. Etwas in der Art von "Ich war 9 Stunden bei der Arbeit - Zeit, nach Hause zu gehen".

Oder Sie könnten die Start-/Endzeiten in einem laufenden Protokoll verwenden und ein anderes Skript schreiben, um es zu analysieren und eine Art Bericht zu erstellen.

Ich habe Teile dieser Art von Skripten herumliegen, wenn es die Zeit bei der Arbeit erlaubt, werde ich hier etwas hinzufügen.

man launchdist ganz nützlich.

Danke @alepin! Öffnet sich für einen netten minimalen Ansatz. :)

Hier ist eine weitere Option für Leute, die dies versuchen.

Anstatt alle 5 Minuten einen Befehl auszuführen, können Sie ihn immer dann ausführen, wenn sich der Ordner /Library/Preferences/SystemConfiguration/ändert. Dies geschieht im Allgemeinen nur, wenn es eine Art Netzwerkänderung gibt.

Sie könnten dies mit Lingon tun oder Ihre eigene launchd-Plist erstellen, die ungefähr so ​​​​aussehen würde:

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

Offensichtlich möchten Sie /path/to/your/script.shden tatsächlichen Pfad ersetzen.

Beachten Sie, dass Sie am Anfang des Skripts möglicherweise ein „sleep 10“ einfügen müssen, um dem Mac die Möglichkeit zu geben, alle seine Anpassungen vorzunehmen, sobald eine Netzwerkänderung stattgefunden hat.

Der einfachste Weg, den Namen (SSID) des AirPort-Netzwerks, mit dem Sie verbunden sind, abzurufen, ist:

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

Der airportBefehl ist unter /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport10.8 zu finden (und ich glaube 10.7 und 10.6)

Ich verlinke es im Allgemeinen mit /usr/local/bin:

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

Möglicherweise müssen Sie sudodiesen Befehl ausführen, je nachdem, wie Ihr /usr/local/bin/ eingerichtet ist.

Zu guter Letzt müssen Sie überlegen, was zu tun ist, wenn Sie Ihren Laptop in den Ruhezustand versetzen. Wenn Sie zum Beispiel von 9 bis 17 Uhr im Büro sind und Ihren Laptop um 5 Uhr ausschlafen, möchten Sie das auch aufzeichnen, oder? Wie willst du sonst wissen, wann du gegangen bist?

Dafür empfehle ich SleepWatcher 2.2, der unter http://www.bernhard-baehr.de erhältlich ist (kostenlos, Quellcode enthalten). Auf diese Weise können Sie ein Shell-Skript ausführen, wenn Ihr Mac aufwacht oder schläft.

Die einzige andere Überlegung ist, was zu tun ist, wenn Sie sich abmelden oder Ihren Computer herunterfahren, anstatt ihn in den Ruhezustand zu versetzen. Darauf habe ich keine gute Antwort. Theoretisch wäre ein LogoutHook die Antwort, aber diese scheinen unzuverlässig zu sein, insbesondere beim Herunterfahren vs. Abmelden.

Ein völlig unzusammenhängender Vorschlag

Sie haben erwähnt, dass Sie ein iOS-Gerät haben. Eine Möglichkeit, dieses Problem zu lösen, wäre vielleicht, eine Erinnerung zu erstellen, wann immer Sie zur Arbeit kommen oder gehen. Wenn die Erinnerung losgeht, lösen Sie Siri aus und sagen Sie „Denken Sie daran, die Arbeit um 17 Uhr verlassen zu haben“ oder „Denken Sie daran, um 9 Uhr bei der Arbeit angekommen zu sein“, und Siri wird es notieren. Weder elegant noch vollständig automatisch, aber wenn es mir um die Nachverfolgung abrechenbarer Stunden ginge, hätte ich nichts gegen ein wenig Redundanz :-)