连接到办公室Wi-Fi时如何自动跟踪办公时间?


8

我正在寻找一种解决方案,该解决方案可以在每次登录办公室wifi时启动计时器,并在离开时停止计时器。它基本上应该记录我在办公室花费的时间。我知道有适用于此的iOS软件,但我喜欢电池续航时间。

如果解决方案可以自动在iCal中记录小时数,则将获得额外的奖励。


有趣的是,我不知道一个应用程序可以做到这一点……
Martin Marconcini 2012年

我假设您的工作所使用的无线网络名称(essid)与您在家中使用的无线网络名称不同/不同吗?
alesplin 2012年

@alesplin是的。
yusf 2012年

我可能对此有一些修改。我来看看。
alesplin 2012年

@alesplin怎么样了?
yusf 2012年

Answers:


9

您可以使用 ControlPlane完成此任务:

ControlPlane根据许多可用的证据来源确定您所在的位置或您在做什么,然后根据您的偏好自动重新配置Mac。证据来源可以包括您的当前位置,可见的WiFi网络,连接的USB设备,正在运行的应用程序等。您甚至可以使用Shell脚本编写自己的证据来源!

简而言之,您可以为ControlPlane提供“证据来源”,例如

  • WiFi,范围内的网络或基于您当前连接的网络的网络

在此处输入图片说明

然后在进入(或离开)特定上下文时执行一系列操作,例如

  • 打开任何文件,包括启动应用程序
  • 运行脚本,例如AppleScript或Shell脚本

在此处输入图片说明

我的想法是,如果ControlPlane知道您的办公室wifi叫什么,您可以创建规则,以便在连接到它时启动应用程序或Shell脚本以开始记录您的时间。然后,当您断开连接时,您将停止应用程序或运行另一个Shell脚本以停止记录您的时间。

我意识到这可能不是您正在寻找的“银弹”解决方案,但是可能值得尝试。您仍然必须找到某种计时器应用程序/脚本,但这可能是问题中较容易的部分:)


谢谢您的回答!起初,ControlPlane似乎有点矫kill过正(正在寻找更轻便的解决方案),但是一旦我有时间学习AppleScript,我就会尝试一下。
yusf 2012年

@yusf没问题。希望它会有所帮助。当您到达那里时,我也会对您的最终解决方案感兴趣!:-)
binarybob 2012年

4

您可以使用该命令networksetup -getairportnetwork <device>获取当前连接的无线网络的名称(您的机场的设备ID在哪里-可能是en1)。

从那里,您可以使用launchd计划每5分钟左右运行一次的脚本,该脚本将获取您所连接的无线网络的名称,并在您首次连接到工作wi-fi时进行记录。

根据您的需要,然后您可以使用相同的脚本在发现您不再连接到工作wi-fi时记录另一个条目,或在特定的时间间隔发布某种通知(可能使用咆哮)。类似于“我已经工作9个小时了-该回家了”。

或者,您可以在运行的日志中使用开始/结束时间,并编写另一个脚本来解析它并创建某种报告。

我随处可见这些类型的脚本,如果工作时间允许,我将在此处添加一些内容。

man launchd 非常有用。


谢谢@alespin!打开一个很好的最小方法。:)
yusf'4

1

这是尝试这样做的人的另一种选择。

无需每5分钟运行一次命令,而是可以在文件夹/Library/Preferences/SystemConfiguration/更改时运行它。通常仅在发生某种网络更改时才会发生这种情况。

您可以使用Lingon进行此操作,可以创建自己的启动plist,如下所示:

<?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有机会在发生网络更改后进行所有调整。

另外,获得您所连接的AirPort网络的名称(SSID)的最简单方法是:

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时睡觉,您是否也想记录下来,对吗?否则,您怎么知道何时离开?

为此,我建议可以从http://www.bernhard-baehr.de获得SleepWatcher 2.2 (免费,包括源代码)。这样,无论Mac何时唤醒或睡眠,您都可以运行Shell脚本。

唯一的其他考虑因素是注销或关闭计算机(而不是使其处于睡眠状态)时该怎么办。我没有一个好的答案。从理论上讲,LogoutHook可以解决问题,但似乎不可靠,尤其是在关机与注销之间。

完全不相关的建议

您提到您有一台iOS设备。解决此问题的一种方法可能是为您的到达或离开工作创建提醒。提醒消失后,触发Siri并说“记住在下午5点离开工作”或“记住在9am到达工作地点”,Siri会记录下来。既不优雅也不是全自动的,但是如果我要跟踪计费时间,我不会介意一点冗余:-)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.