Я пытаюсь выполнить сценарий bash в nagios с помощью клиента nrpe, но он всегда возвращает значение "0" в качестве вывода.
Если я использую эту команду в скрипте:
_VAR = $ (atop -r file.atop | grep '^ DSK' | tr -s '' | grep "sda" | cut -d '|' -f 3 | grep -o '[ 0-9] + ')
echo $ _VAR
Затем - все работает правильно и на сервере я получаю правильное значение, запустив
/ usr / local / nagios / libexec / check_nrpe -H XXXX -c | вырезать -d '|' -f 3 | grep -o '[0-9] +')
echo $ _VAR
Затем - все работает правильно и на сервере я получаю правильное значение, запустив
/ usr / local / nagios / libexec / check_nrpe -H XXXX-c | вырезать -d '|' -f 3 | grep -o '[0-9] +')
echo $ _VAR
Затем - все работает правильно и на сервере я получаю правильное значение, запустив
/ usr / local / nagios / libexec / check_nrpe -H XXXX-c check_asterisk_extensions
Но если я меняю команду на:
_VAR = $ (/ usr / sbin / asterisk -rx 'sip show peers' | grep -i 'ok' | wc -l)
echo $ _VAR
Затем на сервере я постоянно получаю «0».
Локально оба скрипта возвращают правильные значения.
Я также пробовал использовать скрипт php, который преобразует переменную в целое число:
$ strCommand = "/ usr / sbin / asterisk -rx 'sip show peers' | grep -i 'ok' | wc -l ";
// $ strCommand = "поверх -r file.atop | grep '^ DSK' | tr -s '' | grep" sda "| cut -d '|' -f 3 | grep -o '[0-9] +' ";$ string = shell_exec (" $ strCommand ");
$ str = (int)" $ string "; echo $ str;
Но результат тот же: с первой командой не работает - со второй - все хорошо.
Может ли кто-нибудь объяснить, почему это происходит?
Это было очень просто, у пользователя nagios не было разрешения на выполнение команды "звездочка" -rx. Изменение команды на "sudo asterisk -rx" решило эту проблему
.