缘起
今次的起因在于我的本本需要在家里、办公室切换不同的网络,不同的代理、不同的网关等等,每天做两次实在是太超标了,于是就谋求自动化。
编程
经过一段时间的关注,一条编程指南被发现有助于解决问题:
当然,Apple的尿性太差,links过一段时间就找不到了,所以这个技术问答实际是
Registering and unregistering for sleep and wake notifications
Q: How can my application get notified when the computer is going to sleep or waking from sleep? How to I prevent sleep?
所以,我可以xcode写个console程序,做成服务在后台跑,拿住事件之后fork一个shell做事情就可以了。
脚本
然而,毕竟要干的事太多,这段时间都在gwk上。嗯,gwk是一个API网关,以后再说。
所以我继续找啊找。天从人愿,当然会有人已经干了这事了:
Mac OS X: Automating Tasks on Sleep
所以,我需要干的事情是(bash):
brew install sleepwatcher
touch ~/.sleep
cat >~/.wakeup<<EOF
#!/bin/bash
/usr/bin/osascript -e "display notification \"waking up, banny $(date).\" with title \"Waking Up\""
EOF
chmod +x ~/.wakeup ~/.sleep
好了,现在合上盖子,去泡杯咖啡,回来打开MBP,一个工具自动完成了登录,随即我在通知区域看到了“Waking Up”的通知消息。
这就是我想要的!
试验了几次,发觉完全没问题。
接下去,我的任务是弄个脚本完成网络设置。下次再写。
后记
还有很多办法,当然未必很舒服,不过也很有用。例如pmset:
pmset -g log|grep -e ' Sleep ' -e ' Wakeup'
此外,直接grep日志文件也行得通,只不过都有点浪费,但在其他用途时或许也是可用的。
[…] 接上回的 在MBP苏醒时执行自动任务 ,继续说。 […]