実行時間の長いコマンドの終了をGrowlやメール通知するRubyスクリプト
こんにちは、株式会社CFlatです。
ビルドなどの処理時間が長いコマンドを実行したあとって、どうせ待つぐらいならはてブでも見るかとかyoutubeでも見るかとなって、大抵気がついたときにはコマンドもとっくに終わっているということになりがちです。
かといって、「もう終わったかな、、?終わってねえええ!」を繰り返すのも大変ストレスがたまります。そういったことにならずにコマンドの待ち時間を有効に使うためにはやはり終了を通知するのが賢いでしょう。
方法はいろいろあると思いますが、お手軽にRubyで書いてみようと思います。
ちなみに、通知が欲しいときは2パターンあると思っています。
前者はGrowlの通知、後者はメールでの通知がちょうどいいかなと考えました。
使い方
こうやって使います。Rubyスクリプトに実行したいコマンドを渡します。
# growl
$ growlnotifier [command] --option1 --option2
# mail
$ mailnotifier [command] --option1 --option2
ソース
Growl通知
#!/usr/bin/env ruby commands = ARGV.join ' ' system "#{commands}" system "growlnotify -s -t 'bash' -m 'finished commands - [#{commands}]'"
Growl通知のためには、Growl(有料)とGrowlNotifyが必要です。
GrowlはMacAppStoreから、GrowlNotifyはこちらから→http://growl.info/downloads#generaldownloads
メール通知
#!/usr/bin/env ruby require "mail" commands = ARGV.join ' ' system "#{commands}" mail = Mail.new do from "youraccount@gmail.com" to "your_email" body "[#{commands}] finished" end mail.delivery_method :smtp, { address: "smtp.gmail.com", domain: "gmail.com", port: 587, user_name: "youraccount", password: "yourpassword" authentication: :plain } mail.deliver!