Телеграм бот от пре...
 

Телеграм бот от предшественника

4 Записи
2 Пользователи
0 Reactions
2,193 Просмотры
(@lastkiss4u)
New Member
Присоединился: 5 лет назад
Записи: 3
Создатель темы  

Добрый вечер дорогие форумчане. Я пришел в новую компанию на работу, сам я новичок и дали мне работу с заббиксом и его оптимизацией. 

До меня был человек написавший телеграм бота который не работает. Мне дали задание допилить его и улучшить. Только я в bash-скриптинге не шарю и прошу помочь объяснить что происходит в данном коде.

Спойлер
КОД
#!/bin/bash
export LC_ALL="C"
export LANG="en_US.UTF-8"
#------------------------------------------------------------------------------

BOT_AUTH_TOKEN="token"
LOG_FILE="/var/log/zabbix/telegram.log"

DATETIME=$(date '+%Y/%m/%d %H:%M:%S')
CHAT_ID="$1"
TEXT=$(echo "$2" | grep -v '.UNKNOWN. = .UNKNOWN.' | sed 's/\"//g')

#------------------------------------------------------------------------------

if [[ "${CHAT_ID}" == "getid" ]]; then
RESULT=$(curl -sS -i --max-time 30 "https://api.telegram.org/bot${BOT_AUTH_T OKEN}/getUpdates" 2>&1)
RC=$?
if [ ${RC} -ne 0 ]; then
echo "${RESULT}"
exit 1
elif ! echo "${RESULT}" | grep -iq '"ok":true'; then
echo "${RESULT}"
exit 1
fi
echo "${RESULT}" | awk -F'"chat":' '{print $2}' | awk -F'"date":' '{print $1 }' | sort -u | grep -E "\-?[0-9]{7,}"
exit 0
elif [[ "${CHAT_ID}" =~ ^-?[0-9]+$ && -n "${TEXT}" ]]; then
echo "[${DATETIME}] CHAT_ID:\"${CHAT_ID}\" TEXT=\"${TEXT}\"" >> "${LOG_FILE} "
RESULT=$(curl -sS -i --max-time 30 \
--header 'Content-Type: application/json' \
--request 'POST' \
--data '{"chat_id": "'"${CHAT_ID}"'", "text": "'"${TEXT}"'"}' \
"https://api.telegram.org/bot${BOT_AUTH_TOKEN}/sendMessage" 2>&1)
RC=$?
if [ ${RC} -ne 0 ]; then
echo "${RESULT}" | tee -a "${LOG_FILE}"
echo '' >> "${LOG_FILE}"
exit 1
elif ! echo "${RESULT}" | grep -iq '"ok":true'; then
echo "${RESULT}" | tee -a "${LOG_FILE}"
echo '' >> "${LOG_FILE}"
exit 1
fi
echo "${RESULT}" >> "${LOG_FILE}"
echo '' >> "${LOG_FILE}"
echo "[OK] Message was sent"
exit 0
else
echo "[${DATETIME}] CHAT_ID:\"${CHAT_ID}\" TEXT=\"${TEXT}\"" >> "${LOG_FILE} "
echo "[EE] Invalid arguments" | tee -a "${LOG_FILE}"
echo '' >> "${LOG_FILE}"
exit 1
fi

exit 0
Тема была редактированна 5 лет назад от lastkiss4u

   
ОтветитьЦитата
(@zerox)
Prominent Member Admin
Присоединился: 11 лет назад
Записи: 926
 

Скрипту передают chatid и сообщение, он отправляет его в чат телеграма с заданным id. Настроены всякие проверки и логирование. 

Надо смотреть, что именно не работает. Возможно, токен авторизации не подходит, так как предыдущий админ настраивал его через своего бота, которого удалил после ухода. В конкретном скрипте токен вообще не указан, вместо него просто написано token (BOT_AUTH_TOKEN="token"), а должен быть буквенно-числовой код.

Сама отправка реализована очень просто и стандартно. Вот она:

curl -sS -i --max-time 30 \
--header 'Content-Type: application/json' \
--request 'POST' \
--data '{"chat_id": "'"${CHAT_ID}"'", "text": "'"${TEXT}"'"}' \
"https://api.telegram.org/bot${BOT_AUTH_TOKEN}/sendMessage" 2>&1

Все остальное это обвязка к этой конструкции с проверками. 


   
ОтветитьЦитата
(@lastkiss4u)
New Member
Присоединился: 5 лет назад
Записи: 3
Создатель темы  
От: @zerox

token (BOT_AUTH_TOKEN="token")

я сам скрыл токен, чтобы не выкладывать токен в открытй доступ


   
ОтветитьЦитата
(@lastkiss4u)
New Member
Присоединился: 5 лет назад
Записи: 3
Создатель темы  

@zerox

Спасибо большое 


   
ОтветитьЦитата
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar