LoginSignup
5

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-10-27

概要

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

以上です。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5