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