Skip to content

Commit b5bc825

Browse files
authored
Merge pull request #4 from ThomasKaiser/patch-1
Get rid of potential temp file vulnerability, Error handling, Bugfix
2 parents 90a1d18 + a22fd3c commit b5bc825

File tree

1 file changed

+29
-36
lines changed

1 file changed

+29
-36
lines changed

check_mk_telegram-notify.sh

Lines changed: 29 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -9,48 +9,41 @@
99

1010
# Telegram API Token
1111
# Find telegram bot named "@botfarther", type /mybots, select your bot and select "API Token" to see your current token
12-
TOKEN=$NOTIFY_PARAMETER_1
12+
if [ -z ${NOTIFY_PARAMETER_1} ]; then
13+
echo "No Telegram token ID provided. Exiting" >&2
14+
exit 2
15+
else
16+
TOKEN="${NOTIFY_PARAMETER_1}"
17+
fi
1318

1419
# Telegram Chat-ID or Group-ID
1520
# Open "https://api.telegram.org/bot<YOUR_TOKEN>/getUpdates" inside your Browser and send a HELLO to your bot, refresh side
16-
CHAT_ID=$NOTIFY_PARAMETER_2
17-
18-
# Write Check_MK output to a temporary file, delete depricated macros and create variable OUTPUT
19-
env | grep NOTIFY_ | grep -v "This macro is deprecated" | sort > $OMD_ROOT/tmp/telegram.out
20-
OUTPUT=$OMD_ROOT/tmp/telegram.out
21-
22-
# Read OUTPUT variable and create some more variables for every text-part you want to use afterwards
23-
HOSTNAME=$(grep NOTIFY_HOSTNAME $OUTPUT | cut -d'=' -f2)
24-
HOSTALIAS=$(grep NOTIFY_HOSTALIAS $OUTPUT | cut -d'=' -f2)
25-
WHAT=$(grep NOTIFY_WHAT $OUTPUT | cut -d'=' -f2)
26-
NOTIFICATIONTYPE=$(grep NOTIFY_NOTIFICATIONTYPE $OUTPUT | cut -d'=' -f2)
27-
SERVICEDESC=$(grep NOTIFY_SERVICEDESC $OUTPUT | cut -d'=' -f2)
28-
SERVICEOUTPUT=$(grep NOTIFY_SERVICEOUTPUT $OUTPUT | cut -d'=' -f2)
29-
HOSTOUTPUT=$(grep NOTIFY_HOSTOUTPUT $OUTPUT | cut -d'=' -f2)
30-
PREVIOUSHOSTHARDSHORTSTATE=$(grep NOTIFY_PREVIOUSHOSTHARDSHORTSTATE $OUTPUT | cut -d'=' -f2)
31-
HOSTSHORTSTATE=$(grep NOTIFY_HOSTSHORTSTATE $OUTPUT | cut -d'=' -f2)
32-
PREVIOUSSERVICEHARDSHORTSTATE=$(grep NOTIFY_PREVIOUSSERVICEHARDSHORTSTATE $OUTPUT | cut -d'=' -f2)
33-
SERVICESHORTSTATE=$(grep NOTIFY_SERVICESHORTSTATE $OUTPUT | cut -d'=' -f2)
34-
SHORTDATETIME=$(grep NOTIFY_SHORTDATETIME $OUTPUT | cut -d'=' -f2)
35-
HOST_ADDRESS_4=$(grep NOTIFY_HOST_ADDRESS_4 $OUTPUT | cut -d'=' -f2)
36-
HOST_ADDRESS_6=$(grep NOTIFY_HOST_ADDRESS_6 $OUTPUT | cut -d'=' -f2)
21+
if [ -z ${NOTIFY_PARAMETER_2} ]; then
22+
echo "No Telegram Chat-ID or Group-ID provided. Exiting" >&2
23+
exit 2
24+
else
25+
CHAT_ID="${NOTIFY_PARAMETER_2}"
26+
fi
3727

3828
# Create a MESSAGE variable to send to your Telegram bot
39-
MESSAGE="$HOSTNAME ($HOSTALIAS)%0A"
40-
MESSAGE+="$WHAT $NOTIFICATIONTYPE%0A%0A"
41-
if [[ $WHAT == "SERVICE" ]]; then
42-
MESSAGE+="$SERVICEDESC%0A"
43-
MESSAGE+="State changed from $PREVIOUSSERVICEHARDSHORTSTATE to $SERVICESHORTSTATE%0A"
44-
MESSAGE+="$SERVICEOUTPUT%0A"
29+
MESSAGE="${NOTIFY_HOSTNAME} (${NOTIFY_HOSTALIAS})%0A"
30+
MESSAGE+="${NOTIFY_WHAT} ${NOTIFY_NOTIFICATIONTYPE}%0A%0A"
31+
if [[ ${NOTIFY_WHAT} == "SERVICE" ]]; then
32+
MESSAGE+="${NOTIFY_SERVICEDESC}%0A"
33+
MESSAGE+="State changed from ${NOTIFY_PREVIOUSSERVICEHARDSHORTSTATE} to ${NOTIFY_SERVICESHORTSTATE}%0A"
34+
MESSAGE+="${NOTIFY_SERVICEOUTPUT}%0A"
4535
else
46-
MESSAGE+="State changed from $PREVIOUSHOSTHARDSHORTSTATE to $HOSTSHORTSTATE%0A"
47-
MESSAGE+="$HOSTOUTPUT%0A"
36+
MESSAGE+="State changed from ${NOTIFY_PREVIOUSHOSTHARDSHORTSTATE} to ${NOTIFY_HOSTSHORTSTATE}%0A"
37+
MESSAGE+="${NOTIFY_HOSTOUTPUT}%0A"
4838
fi
49-
MESSAGE+="%0AIPv4: $HOST_ADDRESS_4 %0AIPv6: $HOST_ADDRESS_6%0A"
50-
MESSAGE+="$SHORTDATETIME"
39+
MESSAGE+="%0AIPv4: ${NOTIFY_HOST_ADDRESS_4} %0AIPv6: ${NOTIFY_HOST_ADDRESS_6}%0A"
40+
MESSAGE+="${NOTIFY_SHORTDATETIME}"
5141

5242
# Send message to Telegram bot
53-
curl -s -X POST "https://api.telegram.org/bot$TOKEN/sendMessage" -d chat_id=$CHAT_ID -d text="$MESSAGE" >> /dev/null
54-
55-
# End of script
56-
exit 0
43+
curl -S -X POST "https://api.telegram.org/bot${TOKEN}/sendMessage" -d chat_id="${CHAT_ID}" -d text="${MESSAGE}"
44+
if [ $? -ne 0 ]; then
45+
echo "Not able to send Telegram message" >&2
46+
exit 2
47+
else
48+
exit 0
49+
fi

0 commit comments

Comments
 (0)