由于需要使用nagios监控远程主机的一个应用状态,于是在远程主机上写了一个应用监控脚本。但监控脚本只能用root用户执行,又在远程主机上安装了sudo,并且将nagios用户加入到/usr/local/etc/sudoers文件中。
如下所示:
nagios ALL=(ALL) NOPASSWD:/usr/local/nagios/libexec/check_ols_init
结果在nagios server上显示的应用状态是"NRPE unable to read output"
在远程主机上以root用户执行su - nagios -c "sudo /usr/local/nagios/libexec/check_ols_init cch' 显示结果正确。
root@ols00biilab001:~ #> su - nagios -c 'sudo /usr/local/nagios/libexec/check_ols_init cch'
CCHD OK - CCHD is running at level 3!
于是又检查远程主机的nrpe.cfg文件,这次发现了问题,原来是没有指定sudo的路径。
原来的是command[check_cchd]=sudo /usr/local/nagios/libexec/check_ols_init cch
更改为command[check_cchd]=/usr/local/bin/sudo /usr/local/nagios/libexec/check_ols_init cch
更改后,nagios server输出正确。
备注:如果client端的监控脚本没有执行权限,也会出现同样报错。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/228190/viewspace-586512/,如需转载,请注明出处,否则将追究法律责任。