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.
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
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
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 :)
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 launchd
ist ganz nützlich.
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.sh
den 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 airport
Befehl ist unter /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport
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 müssen Sie sudo
diesen 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.
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 :-)
Martin Marconcini
Alesplin
jusf
Alesplin
jusf
Alesplin