Mac上で起動している仮想マシンから、growlに通知メッセージを送る

id:LukeSilviaさんに教えていただいた+ちょっと改造したこと

やりたいこと

Mac上で起動している仮想マシン(自分の場合はVMware FusionCentosを起動)から、growlに通知メッセージを送りたい

ということ。

ユースケース

railsで自動テストを走らせて、終了したら通知を送る
ログ解析スクリプトを走らせて、終了したら通知を送る
などなど

教えていただいたこと

ssh経由でコマンドを実行する

ssh [user]@[host] "/path_to_growlnotify/growlnotify -m [message]"

という感じ

例えば、

Macのユーザー admin
MacのIPアドレス 10.0.0.0
Mac内のgrowlnotifyのpath /usr/local/bin/
メッセージ hoge

であれば、

ssh admin@10.0.0.0 "/usr/local/bin/growlnotify -m hoge"

改造

パイプ経由で標準入力も受けられるようにしてみたい

~/bin/growl

#!/bin/sh
_message=''

if [ -n "$1" ]; then
  _message=$@
else
  read STDIN
  _message=`echo $STDIN`
fi

ssh admin@10.0.0.0 "/usr/local/bin/growlnotify -m ${_message}"

なんてスクリプトにしてみた。便利ヾ(゚∀゚)ノ

さらにカスタマイズ

growl側でDisplay Style(通知スタイル)を変更したいなら
growlnotifyに -n [application_name] オプションを渡す(--name、ですね。ブログで一瞬間違えてました)

そうして1度通知すると、環境設定のgrowlnotifyのApplicationsに、指定した名前のアプリケーションが登録されるので、
そこでDisplay Styleを変更すれば良い。らくちん

例えば、application_nameをfugaとするならば、
sshしている行を以下のようにする

ssh admin@10.0.0.0 "/usr/local/bin/growlnotify -n fuga -m ${_message}"

もうちょいさらにカスタマイズ

growlnotifyのデフォルトのアイコンは、terminalを模したアイコンなので若干味気ない
でもアイコン画像用意するのはめんどくさい。

ということで、ファイルタイプでアイコンを変更するオプションを付加(-i(--icon) [file_type])

ssh admin@10.0.0.0 "/usr/local/bin/growlnotify -n fuga -i rb -m ${_message}"

とすると、rubyだよ、みたいな。

f:id:sugilog:20110406101650p:image

jsもあった。


他にもオプションはあるので、いろいろと変更できるはず。

お試しあれ。Special THX id:LukeSilvia