Выполнение сценария из обработчика события Nagios не запускается

У меня Nagios работает на веб-сервере. Для этого один сервис службы Nagios, в частности, если он не работает, он запустит скрипт. Этот скрипт запускается через обработчики событий Nagios.

Команда обработчика событий Nagios:

define command{ command_name testDisableServer command_line /usr/local/nagios/etc/objects/event_handlers/testDisableServer.sh } 

Я выполняю скрипт testDisableServer.sh от обработчиков событий Nagios, который выглядит так:

 #!/bin/bash wall "Script execution started"; /usr/bin/sudo /root/scripts/disableServer.sh force 

Этот скрипт testDisableServer.sh имеет следующие разрешения:

 -rwxr-xr-x 1 nagios nagios 2.0K Oct 12 14:57 testDisableServer.sh 

Когда служба опустится, я получу столбец в своем SSH-соединении, в котором говорится: «Начато выполнение скрипта», но это не вызовет мой скрипт disableServer.sh. Я попытался поместить другой столбец внутри disableServer.sh, и это не вызвало его.

Этот скрипт запускается пользователем «nagios». 'nagios' был добавлен в visudo, как таковой:

 nagios ALL=(ALL)NOPASSWD:/root/scripts/disableServer.sh 

Выполнение этого скрипта в качестве пользовательского «nagios» из командной строки работает отлично. Однако, когда обработчик события запускает его, выход отсутствует. Я попытался поймать вывод в файл журнала, и я ничего не придумал. Это разрешения на /root/scripts/disableServer.sh:

 -rwxr-xr-x 1 root root 2.0K Oct 12 15:01 disableServer.sh 

Почему обработчик события ударил 'testDisableServer.sh', но не выполнил 'disableServer.sh' из обработчика событий Nagios, но отлично работает в SSH-соединении в качестве пользователя nagios? BTW, 'testDisableServer.sh' – это еще один дополнительный слой, который добавляется, чтобы увидеть, работают ли обработчики событий, какими они кажутся. Это будет удалено после выполнения этого сценария.

2 Solutions collect form web for “Выполнение сценария из обработчика события Nagios не запускается”

Возможно, это проблема среды (сценарий полагается на что-то в своей среде, которое недоступно при запуске nagios).

Я бы сменил ваш скрипт (временно для отладки только):

 #!/bin/bash exec 2> /tmp/log."$$" set -x wall "Script execution started"; /usr/bin/sudo /root/scripts/disableServer.sh force 

И добавьте еще один set -x вверху disableServer.sh

Чтобы узнать, что происходит (в файлах /tmp/log.* ).

В моем случае проблема заключалась в следующем:

 sudo: sorry, you must have a tty to run sudo 

Таким образом, вы можете просто отключить его в / etc / sudoers, комментируя

 Defaults requiretty 

В любом случае это не имеет никакой пользы.

  • Запросить подтверждение для каждой команды
  • Сценарий оболочки для удаления всех файлов, которые являются более старыми
  • Напишите сценарий оболочки, который принимает переменную из терминала? (переменная ~ $ command)
  • Как суммировать вывод двух команд и сохранить их в файле?
  • помочь построить grep-выход
  • Perge regex получает слово между шаблоном
  • как мне обрезать ведущие и конечные пробелы из каждой строки некоторого вывода?
  • Как использовать значение, возвращаемое скриптом в grep-фильтре?
  • Проблема bc о длинном выражении
  • Как добавить каждый элемент в список с помощью цикла?
  • скрипт ffmpeg - разрезание видео на несколько фрагментов
  • Linux и Unix - лучшая ОС в мире.