Почему Zabbix 3.0 не передаёт параметры $1,$2,$3 в скрипт?

Есть Zabbix 3.0 на Ubuntu 14.04. Получил API с SMS.RU для отправки смс.
Создал скрипт в /usr/local/share/zabbix/alertscripts. Вот содержимое скрипта:

#!/bin/bash
# SMS.RU sender for zabbix
api="133C1FB3-8D01-DD1C-90BA-********"
to="$1"
subject="$2"
body="$3"
curl -d "text=$body" http://sms.ru/sms/send\?api_id=$api\&to=$to

Добавил права к скрипту на исполнение (chmod +x /usr/local/share/zabbix/alertscripts/zabbix-sms).
В самом заббиксе настроил все алерты и добавил параметры {ALERT.SENDTO}, {ALERT.SUBJECT}, {ALERT.MESSAGE} к своему скрипту. При срабатывании триггера заббикс сообщает, что оповещение отправлено, но ничего не приходит.
При выполнении скрипта из консоли выдаёт 203 алерт - нет текста сообщения. Заменив значения $1,$2,$3 на свои (в тело письма написал hello) смс стали приходить. Как бы теперь сделать, что бы мне приходили значения триггеров, а не hello ))
Прошу вашей помощи, т.к. опыта с работой заббикса у меня мало, как и с программировнием.
  • Вопрос задан
  • 4530 просмотров
Решения вопроса 1
@Sergey_A_R Автор вопроса
8ec1b262c16f4fbdbf7388f20bcec7d0.JPG9a697a62b902406f83ef9fe3b0392bff.JPG

Проблема решена! Проблема была в том, что скрипт я запускал из под баша и соответственно параметры от Zabbix он не получал (т.к. использовал стандартным потоком ввода/вывода bash). Для работоспособности нужно было инициировать выполнение скрипта Zabbix'ом или добавить переменные при выполнении скрипта в баше. Для Zabbix 3.0 просот было необходимо добавить значения {ALERT.SENDTO}, {ALERT.SUBJECT}, {ALERT.MESSAGE} в Media Types к вашему скрипту.
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
Может кому пригодится мой вариант скрипта для отправки через сайт sms.ru
#!/bin/bash
# SMS.RU
#Задаём переменные
api="Тут должен быть API"
phone="$1"
text="$2"
body="$3"
LOG="/var/log/zabbix/SMS.log"

# Делаем запись даты в лог
echo >> $LOG
echo -e "                             \e[1;32m --=START=--\e[m" >> $LOG
echo >> $LOG
echo -e "                   \e[1;33m -=`date`=-\e[0m" >> $LOG
echo >> $LOG
#Записываем в лог, что передаёт ZABBIX в скрипт.
echo " Заголовок сообщения" >> $LOG
echo -e "\e[1;36m $body\e[0m" >> $LOG
echo " Текст сообщения" >> $LOG
echo -e "\e[1;36m $text\e[0m" >> $LOG
echo " Телефон получателя" >> $LOG
echo -e "\e[1;36m $phone\e[0m" >> $LOG
echo >> $LOG
#Посылаем СМС
curl -d "text=$body" http://sms.ru/sms/send\?api_id=$api\&to=$phone >> $LOG
echo -e "\e[1;34m <-ответ от СМС шлюза\e[0m" >> $LOG
echo >> $LOG
echo -e "                             \e[1;31m --=FINISH=--\e[m" >> $LOG
echo"===================================================================================================================" >> $LOG
#Смотреть логи в цветном виде можно командой вида : tail -n 19  *Путь к файлу*.log

В Лог так же пишется ответ от сервера, что поможет быстрее диагностировать сбои в работе
Вот пример вывода лога
44c828ca4e404a07b6bd9f8cee09f356.JPG
Ответ написан
Комментировать
fox_12
@fox_12
Расставляю биты, управляю заряженными частицами
А зачем параметры вы в кавычки взяли?
to="$1" => to=$1
Ответ написан
@DUKAEV
v
Используй ${1} вместо $1
Ответ написан
ky0
@ky0
Миллиардер, филантроп, патологический лгун
В конфиге сервера путь к каталогу со скриптами алертов точно совпадает с вашим /usr/local/share/zabbix/alertscripts?

Ну и это...кавычки лишние попробуйте убрать, да. Или в curl`е используйте одинарные.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы