Skip to content

Instantly share code, notes, and snippets.

@senyoltw
Last active April 26, 2019 07:02
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save senyoltw/ff9340c5ef5ab6d257f4ff6ed4e2f5a7 to your computer and use it in GitHub Desktop.
Save senyoltw/ff9340c5ef5ab6d257f4ff6ed4e2f5a7 to your computer and use it in GitHub Desktop.
シェルスクリプトからslackに投稿
#!/bin/sh
set -eu
#Incoming WebHooksのURL
WEBHOOKURL="https://hooks.slack.com/services/XXXXXXXXXX"
#メッセージを保存する一時ファイル
MESSAGEFILE=$(mktemp -t webhooks.XXXXX)
trap "
rm ${MESSAGEFILE}
" 0
usage_exit() {
echo "Usage: $0 [-m message] [-c channel] [-i icon] [-n botname]" 1>&2
exit 0
}
while getopts c:i:n:m: opts
do
case $opts in
c)
CHANNEL=$OPTARG
;;
i)
FACEICON=$OPTARG
;;
n)
BOTNAME=$OPTARG
;;
m)
MESSAGE=$OPTARG"\n"
;;
\?)
usage_exit
;;
esac
done
# デフォルトから変更したいならここを変える
#slack 送信チャンネル
CHANNEL=${CHANNEL:-""}
#slack 送信名
BOTNAME=${BOTNAME:-""}
#slack アイコン
FACEICON=${FACEICON:-""}
#見出しとなるようなメッセージ
MESSAGE=${MESSAGE:-""}
#標準入力の判定
if [ -p /dev/stdin ] ; then
#改行コードとダブルクオートをslack用に変換
cat - | tr '\n' '\\' | sed 's/\\/\\n/g'| sed 's/\"/\\"/g' > ${MESSAGEFILE}
else
echo "nothing stdin"
exit 1
fi
#入力文字がなにもないなら投稿しない
if [ "`cat ${MESSAGEFILE}`" = "" ] ; then
echo "nothing words"
exit 1
fi
WEBMESSAGE=`cat ${MESSAGEFILE}`
#Incoming WebHooks送信
curl -s -S -X POST --data-urlencode "payload={\"channel\": \"${CHANNEL}\", \"username\": \"${BOTNAME}\", \"icon_emoji\": \"${FACEICON}\", \"text\": \"${MESSAGE}${WEBMESSAGE}\" }" ${WEBHOOKURL}
echo
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment