我在 bash 中编写了一个自定义检查,并在 4 个不同的服务器上运行它。其中两个运行正常,另外两个在检查文件是否存在时失败:
if [ ! -f $LOGFILE ]
我所说的“失败”是指,脚本认为这两台服务器上$LOGFILE
不存在该项(这是错误的)。
所有四台服务器都具有相同的配置、权限等。该文件确实存在于所有服务器上。手动运行时,没有错误。以nagios
或nrpe
用户身份手动运行时,没有错误。只有通过 nagios 使用以下命令远程运行时才会失败check_nrpe -H ... -c ...
我想也许我的 bash 技能有点生疏了,所以我用 Python 重写了检查。现在,同样两台服务器发生故障,但错误是
NRPE: Unable to read output
同样,所有服务器中的 Python 版本都相同。但是,我发现出现错误的服务器会显示以下消息:
$ sudo grep nagios /var/log/messages
Jul 19 11:09:15 app-a abrt: detected unhandled Python exception in '/usr/local/nagios/libexec/check_redirects'
正如我所说的,我已经检查了 nagios 配置(nagios 主服务器和客户端上)、权限、python 版本的差异......一切看起来都一样。
我发现很多关于不同检查在同一台服务器上工作/失败的问题。这是完全相同的检查,在某些服务器上工作,但在其他服务器上不工作。
任何想法我都非常感谢。谢谢。