Initial commit
This commit is contained in:
52
scripts/zabscripts/slack1.sh
Executable file
52
scripts/zabscripts/slack1.sh
Executable file
@@ -0,0 +1,52 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Slack incoming web-hook URL and user name
|
||||
url='https://hooks.slack.com/services/' # example: url='https://hooks.slack.com/services/QW3R7Y/D34DC0D3/BCADFGabcDEF123'
|
||||
username='zabbix-server'
|
||||
|
||||
## Values received by this script:
|
||||
# To = $1 / Slack channel or user to send the message to, specified in the Zabbix web interface; "@username" or "#channel"
|
||||
# Subject = $2 / subject of the message sent by Zabbix; by default, it is usually something like "(Problem|Resolved): Lack of free swap space on Zabbix server"
|
||||
# Message = $3 / message body sent by Zabbix; by default, it is usually approximately 4 lines detailing the specific trigger involved
|
||||
# Alternate URL = $4 (optional) / alternative Slack.com web-hook URL to replace the above hard-coded one; useful when multiple groups have seperate Slack teams
|
||||
# Proxy = $5 (optional) / proxy host including port (such as "example.com:8080")
|
||||
|
||||
# Get the user/channel ($1), subject ($2), and message ($3)
|
||||
to="$1"
|
||||
subject="$2"
|
||||
message="$3"
|
||||
|
||||
# Change message emoji and notification color depending on the subject indicating whether it is a trigger going in to problem state or recovering
|
||||
#recoversub='^RECOVER(Y|ED)?$|^OK$|^Resolved*'
|
||||
recoversub='Resolved'
|
||||
problemsub='Problem'
|
||||
#problemsub='^Беда*'
|
||||
updatesub='Update'
|
||||
|
||||
if [[ "$subject" =~ $recoversub ]]; then
|
||||
emoji=':smile:'
|
||||
color='#0C7BDC'
|
||||
elif [[ "$subject" =~ $problemsub ]]; then
|
||||
emoji=':face_palm:'
|
||||
color='#FFC20A'
|
||||
elif [[ "$subject" =~ $updatesub ]]; then
|
||||
emoji=':scream:'
|
||||
color='#FFC20A'
|
||||
else
|
||||
emoji=':pager:'
|
||||
color='#CCCCCC'
|
||||
fi
|
||||
|
||||
# Replace the above hard-coded Slack.com web-hook URL entirely, if one was passed via the optional 4th parameter
|
||||
url=${4-$url}
|
||||
|
||||
# Use optional 5th parameter as proxy server for curl
|
||||
proxy=${5-""}
|
||||
if [[ "$proxy" != '' ]]; then
|
||||
proxy="-x $proxy"
|
||||
fi
|
||||
|
||||
# Build JSON payload which will be HTTP POST'ed to the Slack.com web-hook URL
|
||||
payload="payload={\"channel\": \"${to//\"/\\\"}\", \
|
||||
\"username\": \"${username//\"/\\\"}\", \
|
||||
\"attachments\": [{\"fallback\": \"${subject//\"/\\\"}\", \"title\": \"${subject//\"/\\\"}\", \"text\": \"${message//\"/\\\"}\", \"color\": \"${color}\"}], \
|
Reference in New Issue
Block a user