Nagios Check NRPE 和 Executing scripts 显示不同的输出
Posted
技术标签:
【中文标题】Nagios Check NRPE 和 Executing scripts 显示不同的输出【英文标题】:Nagios Check NRPE and Executing scripts show different outputs 【发布时间】:2020-10-30 08:31:27 【问题描述】:当通过 check_nrpe 执行脚本并从本地服务器执行时,会显示两个不同的输出。
脚本与此类似。
url="http://xxx.xxx.xxx.xxx:5000/v2/_catalog";
status="$(curl --write-out %http_code --silent --output /dev/null $url)"
if [ "$status" = 200 ]
then
echo "OK"
exit 0
else
echo "Not responding.Please check."
exit 2
fi
当直接从本地服务器执行此脚本文件时,它会生成以下输出
[root@xxxxxlibexec]$ ./check.sh
OK
但是当我通过 check_nrpe 从 Nagios Core 服务器执行此操作时,它会生成 else 块。
[root@xxxxx libexec]# ./check_nrpe -H xxx.xxx.xxx.xxx -p 5667 -c check_registry
Not responding.Please check.
NRPE CFG 命令如下。
command[check_registry]=/usr/local/nagios/libexec/check.sh
我已尝试重新启动 NRPE 和 Nagios Core。还仔细检查了权限问题。
【问题讨论】:
根据经验,这可能是 Selinux 不允许 nrpe 守护进程执行脚本的问题 @RamanSailopal 实际上脚本是双向执行的。但是退出值不一样 是的,这就是我的意思。 Selinux 可能正在停止执行初始 curl 命令,获取脚本以在输出中回显 $status 变量 @RamanSailopal 是的,卷曲返回并且为空状态。但是 Selinux 被禁用。 [root@xxx]# getenforce 禁用 @DinukaKavinda 尝试切换到该服务器上的 NRPE 帐户/用户并像bash -x /usr/local/nagios/libexec/check.sh
一样手动运行它。
【参考方案1】:
这是由于 curl 和 libcurl 不匹配造成的。 nagios 用户无法正确卷曲。将软件包降级为相同。
【讨论】:
以上是关于Nagios Check NRPE 和 Executing scripts 显示不同的输出的主要内容,如果未能解决你的问题,请参考以下文章
nagios Connection refused by host