我在主机定义中定义了以下服务:
define service {
use generic-service
host_name myhost.com
service_description swapcheck
check_command check_ssh_swap
}
以及commands.cfg中的以下内容:
define command {
command_name check_ssh_swap
command_line /home/nagios/bin/check_by_ssh -p port -H ip -C "/home/nagios/bin/check_swap -w 20% -c 5%"
}
两个cfg文件都在加载时加载到nagios中。并且nagios -v /etc/nagios/nagios.cfg不会回复任何错误。
当我尝试执行命令
时/home/nagios/bin/check_by_ssh -p port -H ip -C "/home/nagios/bin/check_swap -w 20% -c 5%"
直接使用nagios用户,它没有问题,我得到了我的结果,但是当nagios本身运行预定的检查我总是得到
Return code of 126 for check of host 'host' was out of bounds
我在这里缺少什么?显然所有路径,键等都是正确的,否则我就无法手动执行它。
答案 0 :(得分:0)
显然,nagios不喜欢绝对路径。我为路径切换回$ USER1 $ / ...现在它有效吗?
答案 1 :(得分:0)
从Nagios退出代码126应该意味着找到了支票,但它不可执行。也许你的脚本有不正确的世界或其他权限,以便Nagios无法运行它但你可以吗?
答案 2 :(得分:0)
您的问题没有确定您正在使用哪个操作系统平台,但我猜测CentOS
。如果是这种情况,请检查SELinux
是否已启用并执行:
#getenforce
Enforcing
如果是这样,您有几个选择:
restorecon
,以便为目录audit2allow
添加到Nagios脚本的有效位置除了提及完整性之外,我完全不推荐的另一种可能性是禁用SELinux
。除了快速测试之外,在做这件事之前要考虑很久很久。