2014-02-12 67 views
2

我的PowerShell nagios腳本,安裝在MS Windows Server 2008 64位上,有一個NRPE_NT守護進程的問題。

我聲明如下命令:

command[check_files]=cmd /c echo C:\nrpe\libexec\check_file.ps1 $ARG1$; exit($lastexitcode) | powershell.exe -command - 

我設置ExecutionPolicy爲無限制,

我已經重啓NRPE_NT服務,並宣佈在控制檯命令,就像這樣:

現在,爲什麼如果我在本地運行它,它的效果很好:

C:\>cmd /c echo C:\nrpe\libexec\_file.ps1 C:\nrpe; exit($lastexitcode)| powershell.exe -command - 
No file/s present with this string 

但是,如果我通過check_nrpe運行它我收到此輸出:

「 - 」是用-Command參數指定:沒有其他參數-Command是允許的。

在調試模式下,上NRPE.log我可以看到這一點:

運行命令:CMD/C回波C:\ NRPE \的libexec \ check_file.ps1 C:\ NRPE; exit($ lastexitcode)| powershell.exe -command - $

命令,返回代碼0

爲什麼以這種方式,check_nrpe在端線加元字符($),脫軌整個控制完成?

在此先感謝

回答

1

我不知道這是否會幫助你的情況,但我只是想出了在我的環境是造成類似的東西。這裏是我的NRPE命令comfiguration:

command[foo]=grep file '^pattern$' 

一切都很好,直到我想要的'^pattern$'參數後添加另一個參數......新的參數(在命令行的末尾)將獲得附加的額外$到最後。

NRPE似乎需要$才能逃脫,否則它認爲它是一個變量引用,並且對它做了奇怪的事情。我期待引用可以避免轉義,但NRPE的配置文件不遵循shell風格的引用規則。所以,改變我的NRPE配置這個解決我的問題:

command[foo]=grep file '^pattern$$' 

注意,在修訂後的NRPE命令定義的雙重$$