SSHでリモートのコンソールに接続しているとき、コマンドの終了をGrowlで通知したい

動機

[local] $ ssh dev-server
[dev-server] $ ./do-something-that-takes-long-long-time.sh
Processing...

# ああっいつ終わるかわからないコマンドを実行してしまった、Growlで終了を通知できたら……
# しかしサーバ側に特殊なソフトを入れたくないし

ソリューション

require 'rubygems'
require 'sinatra'
require 'ruby-growl'

g=Growl.new 'localhost','general',['general']

get '/:message' do
  g.notify 'general','Message from remote',params[:message]
  'hello!'
end
# 事前に上のスクリプトを走らせておく
[local] $ ssh dev-server -R 4567:localhost:4567 # リモートマシン上のlocalhost:4567をローカルマシンのlocalhost:4567に転送
[dev-server] ./do-something-that-takes-long-long-time.sh && (wget -q -O - 'http://localhost:4567/done!' > /dev/null )
# コマンドが終わるとローカルマシンのgrowlに通知が!

アナザーソリューション

メール送る