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

8

Я ищу решение, которое запускает таймер всякий раз, когда я вхожу в мой офис Wi-Fi и останавливает его, когда я ухожу. По сути, это должно записывать часы, которые я провел в офисе. Я знаю, что для этого есть программное обеспечение iOS, но мне нравится время автономной работы.

Дополнительным бонусом было бы, если бы решение могло автоматически регистрировать часы в iCal.

yusf
источник
Интересно, я не знаю приложение, которое может сделать это ...
Мартин Маркончини
Я предполагаю, что ваша работа имеет другое / отличное имя Wi-Fi (essid), чем вы используете дома?
alesplin
@alesplin Да, действительно.
2012 г.
У меня может быть немного хака, который можно изменить для этого. Я посмотрю на это и посмотрю.
Alesplin
@alesplin Как все прошло?
2012 г.

Ответы:

9

ControlPlane может быть чем-то, что вы можете использовать для достижения этой цели:

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

В двух словах, вы можете дать ControlPlane «источник доказательств», такой как

  • WiFi, либо сети в пределах досягаемости, либо на основе сети, к которой вы в данный момент подключены

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

Затем выполните набор действий при входе (или выходе) из определенного контекста, например

  • Откройте любой файл, включая запуск приложения
  • Запустите сценарий, например AppleScript или сценарий оболочки

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

Я думаю, что если ControlPlane знает, как называется ваш офисный wifi, вы можете создать правила, чтобы при подключении к нему вы запускали приложение или скрипт оболочки, чтобы начать регистрировать ваши часы. Затем, когда вы отключаетесь, вы останавливаете приложение или запускаете другой сценарий оболочки, чтобы перестать регистрировать ваши часы.

Я понимаю, что это может быть не то решение «серебряной пули», которое вы искали, но, возможно, стоит попробовать. Вам все равно придется найти какое-нибудь приложение / скрипт для таймера, но это, вероятно, самая легкая часть проблемы :)

binarybob
источник
Спасибо за ответ! Поначалу ControlPlane кажется немного излишним (искал что-то более легкое решение), но я попробую его, как только у меня будет время изучить AppleScript.
2012 г.
@yusf Нет проблем. Надеюсь, это поможет. Я также был бы заинтересован в вашем окончательном решении, когда вы туда доберетесь! :-)
двоичный боб
4

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

Оттуда вы можете использовать launchd, чтобы запланировать запуск скрипта каждые 5 минут или около того, который будет получать имя беспроводной сети, к которой вы подключены, и регистрироваться, когда вы впервые подключитесь к своему рабочему Wi-Fi.

В зависимости от того, что вы хотите, вы можете затем использовать тот же сценарий для регистрации другой записи, когда он обнаруживает, что вы больше не подключены к вашей Wi-Fi работы, или для публикации какого-то рода уведомлений (возможно, с рычанием) через определенные промежутки времени. Что-то вроде «Я был на работе 9 часов - время идти домой».

Или вы можете использовать время начала / окончания в текущем журнале и написать другой скрипт для его анализа и создания своего рода отчета.

У меня есть фрагменты этих типов сценариев, если время на работе позволяет, я добавлю кое-что здесь.

man launchd довольно полезно.

alesplin
источник
Спасибо @alespin! Открывается для приятного минимального подхода. :)
yusf
1

Вот еще один вариант для людей, пытающихся это сделать.

Вместо того, чтобы запускать команду каждые 5 минут, вы можете запускать ее при каждом /Library/Preferences/SystemConfiguration/изменении папки . Обычно это происходит только при каких-либо изменениях в сети.

Вы можете сделать это с помощью Lingon или создать свой собственный файл launchd, который будет выглядеть примерно так:

<?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на фактический путь.

Обратите внимание, что вам может понадобиться включить «sleep 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. Возможно, один из способов решения этой проблемы - создать напоминание, когда вы приходите или уходите с работы. Когда напоминание сработает, активируйте Siri и скажите «Помните, что ушли с работы в 17:00» или «Помните, что пришли на работу в 9:00», и Сири запомнит это. Не элегантный и не полностью автоматический, но если бы я смотрел на отслеживание оплачиваемых часов, я бы не отказался от небольшой избыточности :-)

Ти Джей Луома
источник