Por que meu script Powershell está retendo a saída extra quando executado pelo Nagios NRPE?

1

Eu tenho um script do Powershell que estou executando via nrpe como um script externo. O servidor windows (2008) está executando o nsclient ++ (nscp.exe) v 0.4.1.102.

A seção de retorno do meu script do powershell se parece com isso

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

E o script wrapper para chamar o arquivo ps1 é assim:

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

Se eu executar isso a partir de um prompt de comando do Windows, a saída será algo como:

ok 93|queue = 93

Mas quando eu corro usando o check_nrpe do meu servidor nagios, a saída muda para:

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

O Nagios está com problemas para processar os dados de desempenho.

ATUALIZAÇÃO: Depois de preencher um relatório de bug, o autor do software respondeu que esse é o comportamento desejado, mas há duas opções para desabilitá-lo no nsclient.ini:

Globalmente (todos os scripts)

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

Script único

[/settings/external scripts/scripts/check_foo]
ignore perfdata = true
    
por uSlackr 09.04.2014 / 23:32

1 resposta

2

Você deve tentar remover espaços extras em torno do sinal = :

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

Por enquanto, não consigo explicar esse comportamento nesta versão de nsclient++ . Isso não está acontecendo em algumas versões anteriores, como v0.3.8.76 , que funciona como um charme (pelo menos, como esperado sem surpresas).

Parece que nsclient++ estende espaços como dados com um valor de 0 . Pode ser um bug ou um comportamento desejado.

Na verdade, estou procurando algumas pistas na Internet e tentarei analisar o código-fonte.

    
por 10.04.2014 / 01:45