Ad Widget

Collapse

как передать параметры скрипту, лежащему

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • как передать параметры скрипту, лежащему

    Добрый день.

    Есть скрипт, отправляющий смски, лежит в alertscripts. Для отправки разных сообщений на разные адреса хотелось бы уметь передавать ему параметры. Но не пойму где. В Administration->Media types->SMS я могу только обозначить Имя типа медиа (SMS), тип (скрипт) и имя скрипта (sms.sh).
    Каким образом передать параметры - не пойму.

    Заранее спасибо всем.

  • shura614
    replied
    Вот спасибо-то, еще раз! Что-то не сообразил, что пробел воспринимается как переход к след. параметру.
    Удачи, огромное спасибо.

    Leave a comment:


  • filipp.sudanov
    replied
    Скрипт - отправляющий смс - это вы создали Media type и указали там Type - Script?
    Если так, то проверяйте, как ваш скрипт обрабатывает пробелы и переводы строки в получаемых параметрах.

    Вот для тестовый скрипт для проверки:
    Code:
    #!/bin/bash
    LOG="/tmp/test.log"
    echo ----------------------- >> $LOG
    date >> $LOG
    echo '$1=' >> $LOG
    echo "$1" >> $LOG
    echo '$2=' >> $LOG
    echo "$2" >> $LOG
    echo '$3=' >> $LOG
    echo "$3" >> $LOG

    Leave a comment:


  • shura614
    replied
    Добавлю сюда еще вопрос - почему в скрипт, отправляющий смс, передаются только первые слова из дефолтных значений Subject и Message. В почту все уходит целиком, а в смс - из subj только статус триггера (ОК или Problem), а в message - слово Zabbix (Первое слово из имени триггера, Zabbix agent blah blah blah)

    Leave a comment:


  • shura614
    replied
    Ура! Все ОК, огромное спасибо! Удачи Вам во всем!

    Leave a comment:


  • filipp.sudanov
    replied
    Попробуйте просто
    sms.sh

    Параметры для скрипта добавляются сами, их не нужно явно указывать. Там должно быть только имя скрипта.

    Leave a comment:


  • shura614
    replied
    Там написано sms.sh $1 $2 $3

    Leave a comment:


  • filipp.sudanov
    replied
    А в Administration --> Media types в поле Script name у вас что написано
    sms.sh $1 $2 $3
    или
    sms.sh

    Leave a comment:


  • shura614
    replied
    Да все дело-то в том, что скрипт у меня лежит в точности по тому пути, который сервер указывает, как недоступный!
    Поставил я дебаг левел=4, он мне ту же самую ошибку и нарисовал:

    58622:20140811:154124.870 query [txnlev:0] [update alerts set status=2,retries=3,error='/usr/share/zabbix/alertscripts/sms.sh $1 $2 $3: [2] No such file or directory' where alertid=259]

    А скрипт-то лежит ровнехонько по правильному адресу:

    [[email protected] alertscripts]# ll /usr/share/zabbix/alertscripts/sms.sh
    -rwxrwxrwx 1 zabbix zabbix 340 Aug 11 12:49 /usr/share/zabbix/alertscripts/sms.sh
    со всеми какими только можно правами, вот какая загогулина

    Leave a comment:


  • filipp.sudanov
    replied
    Есть вот какой чудесный момент:
    В Remote command из Configuration->Actions->Operations указывается полный путь до исполняемого скрипта.
    А в Administration -> Media types указывается только само называние скрипта (т.е. например, sms.sh), а путь к нему берется из конфига заббикса - из AlertScriptsPath.

    Возможно, дело в этом. Догадатся об этом можно только поставив 4 уровень логгинга и посмотрев в лог файле что происходит.

    AlertScriptsPath по умолчанию равер ${datadir}/zabbix/alertscripts, ${datadir} задается где-то при компиляции. При сборке из сорцов он у меня получился /usr/local/share/zabbix/alertscripts, при инсталляции из пакетов будет что-то другое.

    Leave a comment:


  • shura614
    replied
    Скрипт sms.sh лежит у меня в /usr/share/zabbix/alertscripts. Права все и всяческие есть, на пользователя zabbix. Тем не менее в Administration->Audit->Actions он пишет про смс вот что:
    /usr/share/zabbix/alertscripts/sms2.sh $1 $2 $3: [2] No such file or directory
    Хотя скрипт есть, права есть, и из-под пользователя zabbix он отлично запускается.
    Если же в Configuration->Actions->Operations в Operation Type вместо Send Message выбрать Remote Command и Сustom script, и вставить /usr/share/zabbix/alertscripts/sms.sh, то скрипт выполняется. Если написать в качестве параметров телефон и текст сообщения as is - все получается хорошо. Если в этом случае подставить $1 $2 $3 - параметры не передаются.
    Вот такое положение вещей, если можно - поясните, что у меня еще неправильно...

    Leave a comment:


  • filipp.sudanov
    replied
    В Administration->Users->Media->SMS есть поле "Send to". Его содержимое и должно попасть в $1.

    Configuration->Action-> <action_name>. Там два поля "Default subject" и "Default message". Они станут, соответственно, $2 и $3 (только макросы заполнятся значениями).

    Если хочется передать чего-то дополнительное, то можно в $3 писать это в отдельных строчках, отмечая каким-то префиксом и потом в скрипте выделять из текста.

    Leave a comment:


  • shura614
    replied
    Про $1 $2 и прочее в самом скрипте, безусловно, понятно. А вот как передать например номер телефона администратора, который лежит в Administration->Users->Media->SMS в этот самый $1? а также например имя триггера, который активизировал посылку сообщения в например $2?

    Leave a comment:


  • filipp.sudanov
    replied
    Значения параметров фиксированы:

    Когда скрипт оповещения выполняется ему передается через командную строку 3 ($1, $2 и $3 соответственно):

    Кому
    Тема
    Сообщение

    https://www.zabbix.com/documentation...s/media/script

    Leave a comment:


  • shura614
    replied
    Так-то оно так, а где сами параметры определить? Внутри скрипта, положим я пишу что-то типа
    phone=$1
    message=$2
    А где в заббихе я определю значения параметров?

    Leave a comment:

Announcement

Collapse
No announcement yet.
Working...
X