Я использую Shinken, и у меня есть пакет, который включает в себя несколько команд, запускающих сценарии bash на контролируемом хосте через NRPE. У меня есть проверка на хосте, который запускает сценарий bash, который принимает 4 параметра. Когда он запускает только 1 из 4 параметров, которые я передаю в command.cfg, он попадает на хост для использования скриптом.
Я много искал по этой проблеме и не смог найти решения. Из того, что я читал, большинство проблем, о которых сообщают люди с передачей параметров в NRPE, происходят из-за неправильной установки "dont_blame_nrpe" или из-за того, что nrpe не скомпилирован с поддержкой параметров. В моей ситуации это не так. dont_blame_nrpe установлен в 1, и модуль был скомпилирован с поддержкой параметров. Более того, у меня есть проверка на том же хосте (настроенная в одном пакете), которая принимает один параметр и работает нормально.
Вот мой файл commands.cfg в пакете:
define command {
command_name check_nrpe
command_line $PLUGINSDIR$/check_nrpe -u -H $HOSTADDRESS$ -c $ARG1$ -a '$ARG2$ $ARG3$ $ARG4$ $ARG5$'
}
Я также пробовал описанное выше с двойными кавычками вокруг всего набора аргументов и двойными кавычками вокруг каждого отдельного аргумента. Я получаю тот же результат, несмотря ни на что.
И определение услуги:
define service{
service_description check-worker-count
use generic-service
register 0
host_name nrpe-pack
check_command check_nrpe!check-worker-count!worker-name!12!90!80
}
И /etc/nrpe.d/check-worker-count.cfg на хосте:
command[check-worker-count]=/usr/lib64/nagios/plugins/check_worker_count.sh -n $ARG1$ -p $ARG2$ -w $ARG3$ -c $ARG4$
У меня есть сценарий на хосте, выводящий $ * в самом начале, и вот что он получает:
-n имя-работника -p -w -c
Сравните с запуском скрипта локально с параметрами, переданными в командной строке:
-n имя-работника -p 12 -w 90 -c 80
Не беспокойтесь о разделении всех -a ARG на отдельные ARG в Nagios conf. Вы сведете себя с ума цитатами. Для простоты сделайте свой command_line
что-то вроде:
$PLUGINSDIR$/check_nrpe -u -t 30 -H $HOSTADDRESS$ -c $ARG1$ -a $ARG2$
А затем используйте это так:
check_command check_nrpe!check-worker-count!worker-name 12 90 80
По крайней мере, так вы бы сделали это в Nagios / Icinga. То же самое должно быть и с Синкеном.