Cron登録しているシェルスクリプトからSlackにメッセージを送る。

More than 1 year has passed since last update.


概要

Cron登録しているバッチの処理完了、エラーの通知をSlackに置き換えました。(メールだと埋もれるし見なくなるので)

非常に簡単だったのでコピペで使えるようにサンプルコードを紹介します。


手順


  1. Slack側でIncommingWebhookを登録してAPIトークンを発行する。

  2. CurlでPOSTする。

以上。

こちらの記事が詳しくてわかりやすいです。

http://qiita.com/tt2004d/items/50d79d1569c0ace118d6


コピペ用サンプルコード

詳しい使い方は先述の記事を読んでいただくとして、ここではコピペで使えるコードを紹介します。


ShellからSlack通知

#!/bin/bash

# Please Customize
SLACK_URL=https://hooks.slack.com/services/XXXXXXX #
FALLBACK_TEXT=testfallbacktext
PRE_TEXT=pretesxt
TITLE=title
TITLE_LINK=title_link
TEXT=text
COLOR='#7CD197'
EMOJI=:sob:
USER=username
MESSAGE=slackbottest

#send slack notification
function post_slack(){
ATTACHMENTS='{'\
'"fallback": "'$FALLBACK_TEXT'",'\
'"pretext": "'$PRE_TEXT'",'\
'"title": "'$TITLE'",'\
'"title_link": "'$TITLE_LINK'",'\
'"text": "'$TEXT'",'\
'"color": "'$COLOR'"'\
'}'

PAYLOAD=\
'payload={"text": "'$MESSAGE'", '\
'"icon_emoji": "'$EMOJI'", '\
'"username": "'$USER'", '\
'"attachments":['$ATTACHMENTS']}'

curl -X POST --data-urlencode "$PAYLOAD" $SLACK_URL
}

# How to Use

echo "DO SOMETHING"

if [ $? -gt 0 ]; then
# エラーの場合
TITLE="エラーが発生しました!!"
TEXT="確認してください!!"
post_slack

else

TITLE="正常に終了しました"
TEXT="安心してください。"
post_slack

fi



使い方

必要な変数に値を設定してpost_slack関数を呼ぶだけです。

メッセージの書式などは公式を参考にしてください。

https://api.slack.com/docs/message-formatting

https://api.slack.com/docs/message-attachments

以上です。