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

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

1.インストール

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

Linuxの場合

bash
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の場合

bash
brew install slackcat

2.設定

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

bash
slackcat --configure
shell
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.コマンドを実行する

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

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

shell
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を使ったスクリプト書いたほうが良いだろう。