可以手动执行nagios ssh检查但是从nagios获得126/127越界错误

时间:2013-09-14 15:12:55

标签: ssh nagios

我在主机定义中定义了以下服务:

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

我在这里缺少什么?显然所有路径,键等都是正确的,否则我就无法手动执行它。

3 个答案:

答案 0 :(得分:0)

显然,nagios不喜欢绝对路径。我为路径切换回$ USER1 $ / ...现在它有效吗?

答案 1 :(得分:0)

从Nagios退出代码126应该意味着找到了支票,但它不可执行。也许你的脚本有不正确的世界或其他权限,以便Nagios无法运行它但你可以吗?

答案 2 :(得分:0)

您的问题没有确定您正在使用哪个操作系统平台,但我猜测CentOS。如果是这种情况,请检查SELinux是否已启用并执行: #getenforce Enforcing

如果是这样,您有几个选择:

  1. 将您的脚本放在找到其他工作脚本的位置;您可能需要执行restorecon,以便为目录
  2. 正确标记脚本
  3. 了解如何使用audit2allow添加到Nagios脚本的有效位置
  4. 除了提及完整性之外,我完全不推荐的另一种可能性是禁用SELinux。除了快速测试之外,在做这件事之前要考虑很久很久。