我正在尝试从 NRPE.cfg 运行 Powershell 脚本并在 Nagios 中获取输出。
当我在本地 (Windows) 服务器上运行脚本时,一切都很好。但是当我将其放入 NRPE.cfg 并尝试在 Nagios 中获取输出时,我收到无法读取输出的错误。
在互联网上搜索但找不到解决方案,所以也许你可以帮助我..
命令/脚本是:
命令[check_veeam_dailyone]=cmd /c echo c:\install\veeam_check.ps1 ; 退出($lastexitcode) | powershell.exe -ExecutionPolicy Bypass -noninteractive -noprofile -File -
当我将其放在 PowerShell 中的 Windows 服务器上时,我将获得以下输出:
PS C:\Install> OK - 作业:VeeamOne_Daily 于 2014 年 10 月 9 日 04:45:51 成功完成。
“PS C:\Install>”部分很奇怪,但是它确实读取了最后一项工作,所以看起来“没问题”......
但是当我尝试使用以下命令在 Nagios 中获取此输出时:
root@nagios:~# /usr/lib/nagios/plugins/check_nrpe -H 192.168.1.1 -t 300 -c check_veeam_dailyone
它说:
NRPE:无法读取输出
NRPE 运行良好,因为当我尝试获取另一个命令(例如 C 盘)时,一切正常:
/usr/lib/nagios/plugins/check_nrpe -H 192.168.1.1 -t 300 -c pdm_disk_c DISK OK - 使用情况:C:38717.2 MB(总计 61337.0 MB 的 63.12%)|'磁盘使用中'=38717.2MB;'磁盘使用情况'=63.12%;90;95;'磁盘总计'=61337.0MB;
就是不知道哪里出了问题。
我使用的脚本是这个:
http://exchange.nagios.org/directory/Plugins/Backup-and-Recovery/Others/check_veeam_backups/details
感谢您的回复!
答案1
我首先会尝试降低脚本的复杂性,比如说......
回显“Hello World”并查看是否有效。
- 不仅如此,NRPE 通常由名为 nrpe 的用户运行(除非另有说明),因此当您运行检查时,请从 nrpe 用户运行它们,而不是从 root 运行。
- 还要确保被监控机器上的 nrpe.cfg 中的“dont_blame_nrpe”设置为“1”。
- 您可以尝试的另一件事是包装它:
cmd /c echo c:\install\veeam_check.ps1 ; 退出 ($lastexitcode) | powershell.exe -ExecutionPolicy Bypass -noninteractive -noprofile -File -
在批处理文件(.bat)中,然后将 NRPE 中的命令更改为更简单的命令,如下所示:
command[check_veeam_dailyone]=yourscript.bat
然后尝试再次运行该命令并查看是否有效。