Slackにメッセージを送信するスクリプトを作ろう!コマンド化の方法も

Linux

実行するだけでSlackにメッセージを送れるスクリプト・コマンドを作ってみます。

スポンサーリンク

手順1 SlackにIncoming Webhookを導入する

まずはSlack側での下準備です。APIからメッセージを送れるようにしておきます。

SlackのWebhook URL取得手順 #Slack – Qiita

SlackのWebhook URL取得手順 - Qiita
SlackのWebhook URLを取得するまでの手順を示す。最終的にやりたいことChatにWebサービスの結果を通知するChatOps的なことをしたい。通知先のChatツールとしてSlack…

上記サイトの通りやればOKです。1分でできます♪

Webhook URLは以降で使うので、コピーしておきましょう。

スポンサーリンク

手順2 Slackにメッセージを送るスクリプトをつくる

Slackにメッセージを送るスクリプトを作ります。

第1引数にメッセージ本文を指定できるようにします。

今回は自動的に日時と送信元マシンのホスト名もメッセージに含めるようにしました。

#!/bin/bash

# Webhook URL を設定(必要に応じて変更してください)
WEBHOOK_URL="https://hooks.slack.com/services/XXXXXXXXX/XXXXXXXXX/XXXXXXXXXXXXXXXXXXXX"

# 引数チェック
if [ -z "$1" ]; then
  echo "メッセージ本文を第1引数に指定してください。"
  exit 1
fi

# ホスト名を取得
HOSTNAME=$(hostname)

# 現在日時を取得(日本時間)
DATETIME=$(date '+%Y年%m月%d日(%a) %H:%M:%S')

# メッセージ本文を構築
MESSAGE="[$HOSTNAMEから送信]\n$1\n$DATETIME"

# Slack に送信するJSONデータを構築
PAYLOAD=$(cat <<EOF
{
  "text": "$MESSAGE"
}
EOF
)

# curl で Slack に送信(レスポンスを抑制)
curl -s -X POST -H 'Content-type: application/json' --data "$PAYLOAD" "$WEBHOOK_URL" > /dev/null

”送信日時やホスト名はいらない”という方は以下のようにしましょう。

#!/bin/bash

# Webhook URL を設定(必要に応じて変更してください)
WEBHOOK_URL="https://hooks.slack.com/services/XXXXXXXXX/XXXXXXXXX/XXXXXXXXXXXXXXXXXXXX"

# 引数チェック
if [ -z "$1" ]; then
  echo "メッセージ本文を第1引数に指定してください。"
  exit 1
fi

# メッセージ本文を構築
MESSAGE="$1"

# Slack に送信するJSONデータを構築
PAYLOAD=$(cat <<EOF
{
  "text": "$MESSAGE"
}
EOF
)

# curl で Slack に送信(レスポンスを抑制)
curl -s -X POST -H 'Content-type: application/json' --data "$PAYLOAD" "$WEBHOOK_URL" > /dev/null

スクリプトを実行すると、以下のようにメッセージが送信されます。

いい感じです♪

手順3 コマンド化する

コマンドとしてシェルから実行できるようにします。

作成したスクリプトを/usr/local/binに移動し、好きな名前にリネームしましょう。

sudo mv send_slack_message.sh /usr/local/bin/sendslack

これでsendslackコマンドを実行すると、Slackが送信されるようになりました。

コメント

タイトルとURLをコピーしました