//ルートにアクセスされたら/archiveにリダイレクトする

エイリーの備忘録

開発や音楽について書いていこうと思っています。

シェルスクリプトでslackにメッセージ送信してみた

まえがき

今日はシェルスクリプトを使ってslackメッセージを送信できるようにしてみました。
これを使うとどうなるのか?
例えば、かなり長い処理をさせた時にPCの前でずっと完了を待ってるのって辛いですよね?
処理が終わった時にこのスクリプトを叩けばslackに通知が来たらPCの前に戻って作業の再開ってことをしたくて作りましたので具体的な方法を紹介したいと思います。

内容としてはslackのAPIを叩いてるだけなんですけどねw

準備

ターミナルや端末を起動する
slackのwebAPIのトークンを取得しておく

トークンの取得についてはこの記事を参考に取得してください。
qiita.com

curlコマンドが入っているか確認

$curl -v

上記のコマンドを叩いて、command not foundとでなければcurlは入っています。

もし、command not found:と出た場合は、curlをインストールしてください。

$sudo apt install -y curl

実際に投稿できるか実験してみる

端末からこのコマンドを叩けばslackのジェネラルにメッセージが飛びます。<>の中は適時修正してください。
はお好みの名前を入れてください。
channelの中を修正するとチャンネルを指定することもできます。

curl -X POST "https://slack.com/api/chat.postMessage?token=<token>&channel=general&text=<message>&username=<botName>"

スクリプトにしてみる

このコマンドを毎回打つのはめんどくさいのでスクリプトにして、ついでにどこからでも呼び出せるようにしたいと思います。

$cd <作業ディレクトリ>
$vim slackPost

上記のコマンドで、作業ディレクトリに移動し、スクリプトファイルを作ります。
拡張子をつけていないのは、わざとで、コマンドになった時に打つのがめんどくさいからです。

slackPostの内容は下記のとおりになります。

#!/bin/sh
curl -X POST "https://slack.com/api/chat.postMessage?token=<token>&channel=general&text=$1&username=<botName>"

スクリプトを書き終わったら、実行権を与えて実行してみます。

$chmod 755 slackPost
$./slackPost "postText"

実行時の第一引数にpostしたいメッセージを記入します。
引数を追加してチャンネル名やbot名を毎回決めてもいいかもしれません。
このpostTextの中ではスペースや改行は使えないのでご注意ください。

どこからでも使えるようにpathを通しておく

ubuntuの場合、~/.profileに通したいpathを記述するとログイン時に自動でpathを通してくれます。
私の場合、/home/you/path に今回作ったスクリプトをおいているので、下のようになります。

ファイルを開く
$vim ~/.profile

パスを追加する
PATH="$PATH:/hoge/you/path"

これであとは一度ログアウトしてログインすると使えるようになっています。

おまけ

実際に使う時の文章はこうなります。
今回は長い処理を思いつかなかったので適当なパッケージをインストールするという想定でやります。

sudo apt install tree -y; slackPost "treeのインストールが完了しました。"