Wie kann ich die Bürozeiten automatisch verfolgen, wenn ich eine Verbindung zu meinem Büro-WLAN herstelle?

8

Ich suche nach einer Lösung, die einen Timer startet, wenn ich mich bei meinem Büro-WLAN anmelde und ihn stoppt, wenn ich gegangen bin. Es sollte im Wesentlichen die Stunden protokollieren, die ich im Büro verbracht habe. Ich bin mir 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 in iCal automatisch protokollieren könnte.

yusf
quelle
Interessant, ich kenne keine App, die das kann ...
Martin Marconcini
Ich gehe davon aus, dass Ihre Arbeit einen anderen / eindeutigen WLAN-Namen (essid) hat als Sie zu Hause?
Alesplin
@alesplin Ja in der Tat.
Yusf
Ich habe vielleicht einen Hack, der dafür modifiziert werden kann. Ich werde es mir ansehen und sehen.
Alesplin
@alesplin Wie ist es gelaufen?
Yusf

Antworten:

9

Mit ControlPlane können Sie möglicherweise Folgendes erreichen:

ControlPlane ermittelt anhand einer Reihe verfügbarer Beweisquellen, wo Sie sich befinden oder was Sie tun, und konfiguriert Ihren Mac dann automatisch anhand Ihrer Einstellungen neu. Beweisquellen können Ihr aktueller Standort, sichtbare WiFi-Netzwerke, angeschlossene USB-Geräte, laufende Anwendungen und mehr sein. Sie können sogar Ihre eigenen Beweisquellen mit Shell-Skripten schreiben!

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

  • WiFi, 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 wie AppleScript oder ein Shell-Skript aus

Geben Sie hier die Bildbeschreibung ein

Ich denke hier, wenn ControlPlane weiß, wie Ihr Office-WLAN heißt, können Sie Regeln erstellen, damit Sie beim Herstellen einer Verbindung eine Anwendung oder ein Shell-Skript starten, um Ihre Stunden zu protokollieren. Wenn Sie dann die Verbindung trennen, stoppen Sie die Anwendung oder führen ein anderes Shell-Skript aus, um die Protokollierung Ihrer Stunden zu beenden.

Mir ist klar, dass dies möglicherweise nicht die "Silberkugel" -Lö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 :)

Binärbob
quelle
Danke für die Antwort! ControlPlane scheint zunächst etwas übertrieben zu sein (suchte nach einer leichteren Lösung), aber ich werde es ausprobieren, sobald ich Zeit habe, AppleScript zu lernen.
Yusf
@yusf Kein Problem. Hoffentlich hilft es. Ich würde mich auch für Ihre endgültige Lösung interessieren, wenn Sie dort ankommen! :-)
binarybob
4

Mit dem Befehl können networksetup -getairportnetwork <device>Sie den Namen Ihres aktuell verbundenen drahtlosen Netzwerks abrufen (wo ist die Geräte-ID Ihres Flughafens - wahrscheinlich en1).

Von dort aus können Sie mit launchd ein Skript planen, das etwa alle 5 Minuten ausgeführt wird. Dabei wird der Name des drahtlosen Netzwerks, mit dem Sie verbunden sind, abgerufen und protokolliert, wenn Sie zum ersten Mal eine Verbindung zu Ihrem Arbeits-WLAN herstellen.

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

Oder Sie können 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 launchd ist sehr nützlich.

Alesplin
quelle
Vielen Dank, dass Sie @alespin! Öffnet sich für einen schönen minimalen Ansatz. :)
Yusf
1

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

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

Sie können dies mit Lingon tun oder Ihre eigene Startliste erstellen, die ungefähr so ​​aussieht:

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

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

Beachten Sie, dass Sie möglicherweise am Anfang des Skripts eine "Schlaf-10" einfügen müssen, damit der Mac nach einer Netzwerkänderung alle Anpassungen vornehmen kann.

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

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

Der airportBefehl ist /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airportin 10.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 benötigen Sie sudodiesen Befehl, 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 5 Uhr im Büro sind und Ihren Laptop um 5 Uhr schlafen, möchten Sie das auch aufzeichnen, oder? Woher wissen Sie sonst, wann Sie gegangen sind?

Dafür empfehle ich SleepWatcher 2.2, das 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 in den Ruhezustand wechselt.

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

Ein völlig verwandter Vorschlag

Sie haben erwähnt, dass Sie ein iOS-Gerät haben. Möglicherweise besteht eine Möglichkeit, dieses Problem zu lösen, darin, eine Erinnerung zu erstellen, wenn Sie ankommen oder die Arbeit verlassen. Wenn die Erinnerung losgeht, lösen Sie Siri aus und sagen Sie "Erinnere dich an die linke Arbeit um 17 Uhr" oder "Erinnere dich daran, dass du um 9 Uhr bei der Arbeit angekommen bist" und Siri wird es notieren. Weder elegant noch vollautomatisch, aber wenn ich abrechnungsfähige Stunden verfolgen möchte, hätte ich nichts gegen ein wenig Redundanz :-)

TJ Luoma
quelle