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



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

define service {
    use                  generic-service
    host_name            myhost.com
    service_description  swapcheck
    check_command        check_ssh_swap
}

以及命令中的以下内容.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

我在这里错过了什么?显然,所有路径、键等都是正确的,否则我将无法毫无问题地手动执行它。

显然,nagios不喜欢绝对路径。我切换回$USER 1美元/...对于路径,现在它有效了吗?

Nagios 的退出代码 126 应该意味着检查已找到,但它不可执行。 也许您的脚本具有不正确的世界或其他权限,因此 Nagios 无法运行它,但您可以运行它?

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

如果是这样,您有以下几种选择:

  1. 将脚本放在找到其他工作脚本的同一位置;您可能需要执行restorecon,以便为目录适当地标记脚本
  2. 了解如何使用audit2allow添加到 Nagios 脚本的有效位置

我根本不推荐但仅提及完整性的另一种可能性是禁用SELinux . 在做这个之前,要仔细考虑一下,除了快速测试之外。

最新更新