Перейти к содержимому
Калькуляторы

Скрипт оповещения Telegram

Настраиваю оповещение Zabbix через Telegram, перепробывал кучю инструкций,

не уходят сообщения через Zabbix, хотя скрипт с консоли сообщения отсылает и в Telegram они приходят,

и почему скрип при запуске выдает api.telegram error.

 

[root@zabbix bin]# tgsend.sh "OK"
api.telegram error
cmd=curl -s --header 'Content-Type: application/json' --request 'POST' --data "{"chat_id":"-XXXXXX","text":"\nOK"}" "https://api.telegram.org/botXXXXXX:XXXXXX/sendMessage"
ressult={"ok":true,"result":{"message_id":66,"from":{"id":XXXXXX,"is_bot":true,"first_name":"XXXXXX","username":"XXXXXX"},"chat":{"id":-XXXXXX,"title":"XXXXXXX","type":"group","all_members_are_administrators":true},"date":1707904054,"text":"OK"}}

 

Скрипт tgsend.sh

 

#!/bin/bash

set -o pipefail
TOKEN="XXXXXX:XXXXXX"
CHAT_ID="-XXXXXX"
APIURL="https://api.telegram.org/bot${TOKEN}/sendMessage"

if [[ -z "$1$2" ]]; then echo "Missing arguments" >&2; exit 2; fi
if [[ -z "$2" ]]
 then
  SUBJECT=""
  MESSAGE="$1"
 else
  SUBJECT="$1"
  MESSAGE="$2"
fi

curlres=$(curl -s --header 'Content-Type: application/json' --request 'POST' --data "{\"chat_id\":\"${CHAT_ID}\",\"text\":\"${SUBJECT}\n${MESSAGE}\"}" "${APIURL}")
curlerr="$?"
if [[ $curlerr -ne 0 ]]; then echo "Curl error:$curlerr" >&2; exit 2;fi
if [[ "$(echo "$curlres"jq ".ok")" != "true" ]]
 then
   echo "api.telegram error" >&2
   echo "cmd=curl -s --header 'Content-Type: application/json' --request 'POST' --data \"{\"chat_id\":\"${CHAT_ID}\",\"text\":\"${SUBJECT}\n${MESSAGE}\"}\" \"${APIURL}\"" >&2
   echo "ressult=$curlres" >&2
fi

exit 0

Изменено пользователем titan

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

dell

Изменено пользователем himikrzn

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А как в Заббикс настраиваете? Там просто по идее все. Создать способ оповещений, в котором токен указать. И в настройках пользователя (где оповещения) указать чат id. Версия какая Заббикса?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

if [[ "$(echo "$curlres"jq ".ok")" != "true" ]]

 

пайп пропущен? не усложняйте..
 

tgres=$(jq ".ok" <<< "$curlres")
if [[ "$tgres" != "true" ]]

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

в zabbix из коробки отправка в telegram работает? нет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

6 часов назад, roysbike сказал:

в zabbix из коробки отправка в telegram работает? нет?

Да, оно с пятых версий из коробки 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

верисия 3 стоит и этого хватает, тоже грешу на скрипт.

Изменено пользователем titan

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.