Як я можу автоматично відслідковувати робочі години під час підключення до свого офісного Wi-Fi?


8

Я шукаю рішення, яке запускає таймер кожного разу, коли я входжу у свій офісний wifi і зупиняє його, коли я виїжджаю. По суті, він повинен фіксувати години, які я проводив в офісі. Я знаю, що для цього є програмне забезпечення iOS, але мені подобається час роботи від акумулятора.

Додатковим бонусом було б, якби рішення могло автоматично записувати години в iCal.


Цікаво, що я не знаю програми, яка може це зробити…
Martin Marconcini

Я припускаю, що ваша робота має інше / чітке ім'я wifi (essid), ніж ви використовуєте домашнє?
алесплін

@alesplin Так.
Юсф

У мене може бути трохи хак, який можна змінити для цього. Я погляну на це і побачу.
алесплін

@alesplin Як це пішло?
юсф

Відповіді:


9

ControlPlane може бути чимось, що ви можете використовувати для цього:

ControlPlane визначає, де ви знаходитесь чи що ви робите, виходячи з кількох доступних джерел доказів, а потім автоматично переконфігурує ваш Mac на основі ваших уподобань. Джерелами доказів можуть бути ваше поточне місцезнаходження, видимі мережі WiFi, приєднані USB-пристрої, запущені програми тощо. Ви навіть можете писати власні джерела доказів, використовуючи сценарії оболонки!

У двох словах, ви можете дати ControlPlane "джерелом доказів", наприклад

  • WiFi, або мережі в межах діапазону, або на основі мережі, до якої ви зараз підключені

введіть тут опис зображення

Потім виконайте набір дій під час входу (або виходу з нього) певного контексту, наприклад

  • Відкрийте будь-який файл, включаючи запуску програм
  • Запустіть сценарій, такий як AppleScript або скрипт оболонки

введіть тут опис зображення

Я думаю, що якщо ControlPlane знає, як називається Wi-Fi у вашому офісі, ви можете створити правила, щоб підключившись до нього, ви запустили програму або скрипт оболонки, щоб почати реєструвати свої години. Потім, коли ви від'єднаєтесь, ви зупиняєте програму або запускаєте інший скрипт оболонки, щоб зупинити реєстрацію годин.

Я усвідомлюю, що це може бути не рішенням "срібної кулі", яке ви шукали, але варто спробувати. Вам все одно доведеться знайти якийсь додаток / сценарій таймера, але це, мабуть, легша частина проблеми :)


Дякую за відповідь! Здається, ControlPlane спочатку трохи непосильний (шукав щось більш легке рішення), але я спробую це, як тільки встигну вивчити AppleScript.
юсф

@yusf Немає проблем. Сподіваємось, це допоможе. Мені також буде цікаво ваше остаточне рішення, коли ви туди потрапите! :-)
binarybob

4

Ви можете скористатися командою, networksetup -getairportnetwork <device>щоб отримати ім’я вашої підключеної досі бездротової мережі (де ідентифікатор пристрою вашого аеропорту - можливо, en1).

Звідти ви можете використовувати запуск для планування сценарію для запуску кожні 5 хвилин або близько того, що отримає ім’я бездротової мережі, до якої ви підключені, та ввійдіть у систему, коли ви вперше підключитесь до свого робочого wi-fi.

Залежно від того, що ви хочете, ви можете використовувати той самий скрипт для реєстрації іншого запису, коли він помітить, що ви більше не підключені до свого робочого wi-fi, або для публікації якогось повідомлення (можливо, використовуючи бурчання) через певні інтервали. Щось у руслі "Я працював 9 годин - час їхати додому".

Або ви можете скористатись початковим / кінцевим часом у запущеному журналі та написати інший скрипт, щоб проаналізувати його та створити якийсь звіт.

У мене є шматочки та фрагменти цих типів сценаріїв, які лежать навколо, якщо час на роботі дозволяє, я щось тут додам.

man launchd є досить корисним.


Дякую @alespin! Відкривається для приємного мінімального підходу. :)
yusf

1

Ось ще один варіант для людей, які намагаються це зробити.

Замість того, щоб виконувати команду кожні 5 хвилин, ви можете запускати її щоразу, коли папка /Library/Preferences/SystemConfiguration/змінюється. Зазвичай це відбувається лише тоді, коли є якась зміна мережі.

Ви можете зробити це за допомогою Lingon або скласти власний запущений пліст, який виглядатиме приблизно так:

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

Очевидно, ви хочете замінити /path/to/your/script.shфактичний шлях.

Зауважте, що вам може знадобитися включити "сон 10" біля початку сценарію, щоб дати шанс Mac внести всі свої коригування, коли відбулася зміна мережі.

Також найпростіший спосіб отримати ім’я (SSID) мережі AirPort, до якої ви підключені, це:

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

airportКоманду можна знайти на сайті /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airportв 10.8 (і я вважаю , 10.7 і 10.6)

Я зазвичай посилаю його на / usr / local / bin:

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

вам може знадобитися sudoця команда, залежно від налаштування вашого / usr / local / bin /.

І останнє, але не менш важливе, вам потрібно подумати, що робити, коли ви кладете ноутбук спати. Наприклад, якщо ви знаходитесь в офісі з 9 до 5 і спите ноутбук о 5, ви теж хочете записати це, правда? Інакше як ти дізнаєшся, коли пішов?

Для цього я рекомендую SleepWatcher 2.2, який доступний на веб-сайті http://www.bernhard-baehr.de (безкоштовно, вихідний код включений). Це дозволить вам запускати скрипт оболонки, коли ваш Mac прокидається або спить.

Єдине інше питання - що робити, якщо вийти з системи або вимкнути комп'ютер, а не спати. Я не маю гарної відповіді на це. Теоретично відповідь LogoutHook була б відповіддю, але це здається ненадійним, особливо при відключенні від виходу.

Зовсім незв'язана пропозиція

Ви згадали, що у вас є пристрій iOS. Можливо, одним із способів вирішити цю проблему було б створити нагадування про те, коли ви приїжджаєте або залишаєте роботу. Коли нагадування вимкнеться, запустіть Сірі та скажіть «Запам’ятайте, що вийшли з роботи о 17 вечора» або «Пам'ятайте, що прийшли на роботу о 9 ранку», і Сірі зробить це. Не елегантний і не повністю автоматичний, але якби я дивився на відстеження оплачуваних годин, я не заперечував би надмірності :-)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.