Назад | Перейти на главную страницу

Почему мой скрипт Powershell сохраняет дополнительный вывод при запуске Nagios NRPE?

У меня есть сценарий Powershell, который я запускаю через nrpe как внешний сценарий. Сервер Windows (2008) работает под управлением nsclient ++ (nscp.exe) v 0.4.1.102.

Раздел возврата моего сценария PowerShell выглядит так

 } else {
                    write-host "ok $queue|queue = $queue"
                    exit 0
 }

А сценарий-оболочка для вызова файла ps1 выглядит так:

ps1 = cmd /c echo C:\\NetAdmin\\%SCRIPT% %ARGS%; exit($lastexitcode) | powershell.exe -command -

Если я запустил это из командной строки Windows, результат будет примерно таким:

ok 93|queue = 93

Но когда я запускаю, использую check_nrpe с моего сервера nagios, вывод меняется на:

ok 93|'queue''=0 '93'=0

У Nagios возникла проблема с обработкой данных о производительности.

ОБНОВЛЕНИЕ: после отправки отчета об ошибке автор программного обеспечения ответил, что это желаемое поведение, но есть два варианта его отключения в nsclient.ini:

Глобально (Все скрипты)

[/settings/external scripts/scripts/default]
ignore perfdata = true

Единый сценарий

[/settings/external scripts/scripts/check_foo]
ignore perfdata = true

Вы должны попытаться удалить лишние пробелы вокруг = подписать :

write-host "ok $queue|queue=$queue"

К настоящему времени я не могу объяснить такое поведение в этой версии nsclient++. Этого не происходит в некоторых предыдущих версиях, таких как v0.3.8.76 который работает как шарм (по крайней мере, как и ожидалось, без сюрпризов).

Кажется, что nsclient++ расширяет пробелы как данные со значением 0. Это может быть ошибка или желаемое поведение.

Я действительно ищу подсказки в Интернете и попытаюсь проанализировать исходный код.