PeeeeRONの日記

更新頻度はあまり高くはありませんがネタがあったら書いていこうと思います。

コマンドの終了をSlackに通知するコマンドを作った。

コマンドの終了をSlackへの投稿で知らせるコマンドを作りました。DeepLearning等の機械学習の学習はとても時間がかかり、GPUを使っても数時間かかるのが当たり前なので終了通知を何らかの方法でうけとりたい。そこでSlackでその通知を受け取れるようにした。

使い方は簡単、まずホームディレクトリに.exslackrcというファイルを作成し以下のように書き出す。

{
  "webHookURL": "https://hooks.slack.com/services/X..../Y....",
  "destination": "@rompei",
  "logFile": "/home/rompei/joblog.txt"
}

webHookURLはSlackのincoming-webhookのURLで、destinationは通知したいユーザかチャンネル。もしコマンドの出力が必要ならlogFileを設定すればコマンドの出力をそのファイルに出力してくれる。またlogFileコマンドラインオプションの-logでも設定できる。

そして実行しいコマンドが並んだファイルを作成する。

./test1.sh xyz
./test2.sh abc

あとはコマンドの並んだファイルを引数にして実行するだけ。

Command ./test1.sh started on 2016-06-26 15:16:19.363573005 +0900 JST is done in 5.61877ms

Command ./test2.sh started on 2016-06-26 15:16:20.761145297 +0900 JST is done in 10.125984ms

このような感じでSlackに通知が来る。
また、ログファイルを設定すると

exslack: 2016/06/26 15:16:19 Command ./test1.sh started on 2016-06-26 15:16:19.363573005 +0900 JST is done in 5.61877ms

 == Output start == 

test1 test1arg1


 == Output end == 

exslack: 2016/06/26 15:16:20 Command ./test2.sh started on 2016-06-26 15:16:20.761145297 +0900 JST is done in 10.125984ms

 == Output start == 

test2 test2arg1


 == Output end == 

こんな感じで出力を確認ファイルから確認できる。

github.com