パイプで繋いでコマンドの標準出力の内容をSlackに通知する『slackcat』

時折、Slackにコマンドから通知を出したいことがある。
面倒だし、標準出力から渡せたらなぁ…と思って調べたところ、まさにそれを行える『slackcat』というコマンドがあるようだ。
これは使えそうということで、早速試してみる。

1.インストール

インストールはかなり簡単なようで、以下のコマンドで実行できる。

Linuxの場合

wget https://github.com/vektorlab/slackcat/releases/download/v1.1/slackcat-1.1-linux-amd64 -O slackcat
sudo mv slackcat /usr/local/bin/
sudo chmod +x /usr/local/bin/slackcat

Mac OS Xの場合

brew install slackcat

2.設定

次に、通知するSlackの設定を行う。
以下のコマンドを実行し、URLを表示させる。

slackcat --configure
blacknon@BS-PUB-UBUNTU-01:~$ slackcat --configure
slackcat Creating token request for Slackcat
slackcat Use the below URL to authorize slackcat if browser fails to launch
slackcat http://slackcat.chat/configure

出力されたURLにアクセスすると、ブラウザからSlackとslackcatを連携するかどうか聞かれる。
許可をすると、以下のような画面が表示されるので、出力されているコマンドを実行してやる。

これで設定は終わり。

3.コマンドを実行する

さて、それでは実際にコマンドを実行してみよう。

コマンド | slackcat --channel チャンネル名
コマンド | slackcat --tee --channel チャンネル名 # コンソール上にも表示させる場合

blacknon@BS-PUB-UBUNTU-01:~$ echo ABC | slackcat --channel general
slackcat connected to blacknon as blacknon
slackcat file 1475194489 uploaded to general (0.395s)
blacknon@BS-PUB-UBUNTU-01:~$ echo AAA | slackcat --tee --channel general
slackcat connected to blacknon as blacknon
AAA
slackcat file 1475194500 uploaded to general (0.335s)

で、Slackの画面がこちら。

確かに、標準出力で渡した内容がSlack側に通知されている。
手軽だし、設定も簡単なので良さそう。

ただ、サーバ側でcronで回すと行った使い方なら、ちゃんとWebHookを使ったスクリプト書いたほうが良いだろう。