自从入手了 E71,装上 PuTTY for Symbian OS 后就能通过 wifi+ssh 远程遥控我的电脑了。一个常遇到的问题,人得跑出去,而电脑上的 aMule 正在挂高清,我想知道我正等着看的东西什么时候下载完成了,然后我好执行远程关机或者选择继续让 aMule 下载其他的东西。

思索了下,最好的通知方式莫过于短信,而真正可用的免费短信功能莫过于 Google Calendar 的短信通知了。由于 aMule 本身就有 Events 功能,剩下的唯一问题就是能在 linux 下执行的 Gcal CLI 了。好在为 Google 做的 third party 的大有人在,很快就找到了 Gcalcli 这个 python 客户端,连 ebuild 在 Gentoo Bugzilla 上都有了。

gcalcli 的用法很简单,先在 $HOME 目录下创建一个 .gcalclirc 文件,里面写入以下几行:

[gcalcli]
user:yourname@gmail.com
pw:yourpassword
cals:all

写法无须解释,最好至少给 chmod 600 .gcalclirc 下,毕竟密码是明文的,给别人看到就糟了。

然后新建一个 download-notify.sh 的文件,写入如下几行:

#!/bin/bash
#usage: download-notify.sh FILENAME

NOTIFY_TIME=`date --date='+5 min' +%R`
FILENAME=$1
ENTRY="$NOTIFY_TIME $FILENAME download finished"

gcalcli quick "$ENTRY"

这是用来快速添加 Google Calendar 事件的脚本,设定时间是当前时间的 5 分钟后 ( 给予一定时间差的容错值免得短信还没来得及通知就已经成历史事件了 ),文件名将由 aMule 的 Events 传递。

接下来要做的是进入 Google Calendar 设置默认的通知方式,先确保你开通了短信通知功能,然后进入 Settings -> Calendars 标签页 -> Notifications,将默认通知方式设置为 1 分钟前短信通知。

gcal-setting

剩下的就是 aMule 设置的问题了。进入 Preferences -> Events,在 Event types 里选择 Download completed,有两个可供执行脚本的 input 框,第一个是当 aMule Core 发现下载完成时执行指定命令,第二个是仅当 aMule GUI 发现下载完成时执行指定命令。不管你使用 aMule daemon 还是 aMule GUI,第一个是绝对可行的。所以开启第一个并输入类似命令 sh ~/scripts/download-notify.sh "%NAME"

amule-setting

OK,可用了。短信通知还是蛮及时的,唯一不爽的就是 Google 非得分两条未满短信通知我。

reminder

有了 gcalcli 能做的事就多了,例如电脑一旦发现 sshd 遭受 brute force attacks 时立刻短信通知,对网管应该比较有用吧 :)