Jak mogę automatycznie śledzić godziny urzędowania, kiedy łączę się z moim biurowym Wi-Fi?

8

Szukam rozwiązania, które uruchamia stoper za każdym razem, gdy loguję się do mojego biurowego Wi-Fi i zatrzymuje go, gdy wychodzę. Powinien zasadniczo rejestrować godziny spędzone w biurze. Wiem, że jest do tego oprogramowanie iOS, ale podoba mi się mój czas pracy na baterii.

Dodatkowym bonusem byłoby, gdyby rozwiązanie mogło automatycznie rejestrować godziny w iCal.

yusf
źródło
Ciekawe, nie znam aplikacji, która może to zrobić…
Martin Marconcini,
Zakładam, że twoja praca ma inną / wyraźną nazwę Wi-Fi (eseid) niż w domu?
alesplin,
@alesplin Tak, rzeczywiście.
yusf
Może mam trochę hacka, który można zmodyfikować w tym celu. Spojrzę na to i zobaczę.
alesplin,
@alesplin Jak poszło?
yusf

Odpowiedzi:

9

ControlPlane może być czymś, czego możesz użyć do osiągnięcia tego:

ControlPlane określa, gdzie jesteś lub co robisz, na podstawie wielu dostępnych źródeł dowodów, a następnie automatycznie konfiguruje komputer Mac na podstawie twoich preferencji. Źródła dowodów mogą obejmować bieżącą lokalizację, widoczne sieci Wi-Fi, podłączone urządzenia USB, uruchomione aplikacje i inne. Możesz nawet pisać własne źródła dowodów za pomocą skryptów powłoki!

W skrócie, możesz dać ControlPlane „źródło dowodów”, takie jak

  • Wi-Fi, sieci w zasięgu lub w oparciu o sieć, z którą jesteś aktualnie połączony

wprowadź opis zdjęcia tutaj

Następnie wykonaj zestaw działań podczas wchodzenia (lub wychodzenia) z określonego kontekstu, np

  • Otwórz dowolny plik, w tym uruchamianie aplikacji
  • Uruchom skrypt, taki jak AppleScript lub skrypt powłoki

wprowadź opis zdjęcia tutaj

Myślę tutaj, że jeśli ControlPlane wie, jak nazywa się twoje biuro wifi, możesz utworzyć reguły, aby po połączeniu z nim uruchomić aplikację lub skrypt powłoki, aby rozpocząć rejestrowanie godzin. Następnie po rozłączeniu zatrzymujesz aplikację lub uruchamiasz inny skrypt powłoki, aby zatrzymać rejestrowanie godzin.

Zdaję sobie sprawę, że to może nie być rozwiązanie „srebrnej kuli”, którego szukasz, ale warto spróbować. Nadal będziesz musiał znaleźć aplikację / skrypt timera, ale to prawdopodobnie najłatwiejsza część problemu :)

binarybob
źródło
Dziękuję za Twoją odpowiedź! ControlPlane wydaje się początkowo nieco przesadzony (szukał czegoś bardziej lekkiego), ale wypróbuję to, gdy będę miał czas na naukę AppleScript.
yusf
@yusf Nie ma problemu. Mam nadzieję, że to pomoże. Byłbym zainteresowany twoim ostatecznym rozwiązaniem, kiedy tam dotrzesz! :-)
binarybob
4

Możesz użyć polecenia, networksetup -getairportnetwork <device>aby uzyskać nazwę aktualnie podłączonej sieci bezprzewodowej (gdzie jest identyfikator urządzenia twojego lotniska - prawdopodobnie en1).

Stamtąd możesz użyć programu uruchamiającego, aby zaplanować uruchamianie skryptu co około 5 minut, co pozwoli uzyskać nazwę sieci bezprzewodowej, z którą jesteś podłączony, i zalogować się przy pierwszym połączeniu z siecią Wi-Fi.

W zależności od tego, czego chcesz, możesz użyć tego samego skryptu, aby zalogować kolejny wpis, gdy zauważysz, że nie masz już połączenia z siecią Wi-Fi w pracy, lub wysłać jakieś powiadomienie (być może za pomocą warczenia) w określonych odstępach czasu. Coś w stylu „Jestem w pracy od 9 godzin - czas wracać do domu”.

Lub możesz użyć czasu rozpoczęcia / zakończenia w uruchomionym dzienniku i napisać inny skrypt, aby go przeanalizować i utworzyć jakiś raport.

Leżą na mnie fragmenty tego rodzaju skryptów, jeśli pozwoli na to czas pracy, coś tu dodam.

man launchd jest całkiem przydatne.

alesplin
źródło
Dziękuję @alespin! Otwiera się na ładne minimalne podejście. :)
yusf
1

Oto kolejna opcja dla osób próbujących to zrobić.

Zamiast uruchamiać polecenie co 5 minut, możesz je uruchomić przy każdej /Library/Preferences/SystemConfiguration/zmianie folderu . Zwykle dzieje się tak tylko wtedy, gdy następuje jakaś zmiana sieci.

Możesz to zrobić za pomocą Lingona lub stworzyć własną listę uruchomieniową, która wyglądałaby mniej więcej tak:

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

Oczywiście chcesz zastąpić /path/to/your/script.shrzeczywistą ścieżkę.

Pamiętaj, że może być konieczne dołączenie „uśpienia 10” w pobliżu początku skryptu, aby komputer Mac mógł dokonać wszystkich zmian po zmianie sieci.

Najłatwiejszym sposobem uzyskania nazwy (SSID) sieci AirPort, z którą jesteś podłączony, jest:

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

airportPolecenia można znaleźć na stronie /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airportw 10,8 (i wierzę, 10.7 i 10.6)

Ogólnie łączę to z / usr / local / bin:

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

może być konieczne wykonanie sudotego polecenia, w zależności od konfiguracji / usr / local / bin /.

Na koniec musisz zastanowić się, co zrobić, gdy uśpisz laptopa. Na przykład, jeśli jesteś w biurze od 9 do 5 lat i śpisz na laptopie o 5, to też chcesz to nagrać, prawda? W przeciwnym razie, skąd będziesz wiedzieć, kiedy wyszedłeś?

W tym celu polecam SleepWatcher 2.2, który jest dostępny na stronie http://www.bernhard-baehr.de (bezpłatny, zawiera kod źródłowy). Umożliwi to uruchomienie skryptu powłoki za każdym razem, gdy komputer Mac budzi się lub śpi.

Jedynym innym czynnikiem jest to, co zrobić, jeśli wylogujesz się lub zamkniesz komputer zamiast go uśpić. Nie mam na to dobrej odpowiedzi. Teoretycznie LogoutHook byłby odpowiedzią, ale te wydają się niewiarygodne, szczególnie przy zamykaniu systemu przeciwko wylogowaniu.

Zupełnie niezwiązana sugestia

Wspomniałeś, że masz urządzenie z systemem iOS. Być może jednym ze sposobów rozwiązania tego problemu byłoby utworzenie Przypomnienia za każdym razem, gdy przyjedziesz lub odejdziesz z pracy. Kiedy przypomnienie się wyłączy, uruchom Siri i powiedz „Pamiętaj o pracy o 17” lub „Pamiętaj, że dotarłem do pracy o 9 rano”, a Siri to zanotuje. Nie elegancki ani całkowicie automatyczny, ale gdybym patrzył na śledzenie rozliczanych godzin, nie miałbym nic przeciwko małej nadmiarowości :-)

TJ Luoma
źródło