Возникла одна, казалось бы, простая задача: отправлять тело запроса, обращаясь по API, с bearer token для авторизации и ловить код ответа или определенную строку. Выбор пал простейшую веб-проверку через Zabbix, но в процессе настройки обнаружился интересный момент, о котором расскажу.
Для использования авторизации методом bearer token, создается http-заголовок “Authorization” с указаем Bearer и далее сам токен. Ниже на скриншоте условный пример такой настройки.

Но в моём случае возник нюанс, что токен был закодирован в base64 и итоговая строка вышла очень длинной, а потому не вмещалась целиком в поле “Значение”. Я не нашёл решения по этому вопросу, чтобы продолжить настройку веб-проверки через морду Zabbix и написал маленький скрипт, где всё выполнил через curl:
#/bin/bash
source_data='{
"dt": "2019-08-11T11:00:00Z",
"text": "тест",
"channelUser":
{ "id": "9142-a2914d-4b9db-8402-8578b402e7bd" }
}'
response=`echo "$source_data" | curl -d @- -H "Content-Type: application/json;charset=UTF-8" -H "Authorization: Bearer <my_long_token_here>" https://<destination_ip>/api 2>&1`
echo "$response" | grep 'Response: 200' >/dev/null && echo 0 || echo 1
Внесу немного ясности.
В переменной формируется исходный JSON.
Далее он отправляется curl`ом через pipe, отдельные примеры
echo '{"text": "Hello **world**!"}' | curl -d @- https://.../api # From pipe
curl -d @filename.txt https://.../api # From file
После добавляется заголовок для корректной отправки JSON:
-H "Content-Type: application/json;charset=UTF-8"
И в конце добавляется заголовок авторизации Bearer token, который не влез в веб-интерфейса Zabbix:
-H "Authorization: Bearer <my_long_token_here>"
В конце отлавливается условный код ответа 200, отсекается лишний вывод в консоль, и 1 или 0 получается на выходе, который уже через UserParameter отправляется к нужному узлу с созданным элементом данных и ключом.