复杂的nagios命令

我为我的一个服务检查定义了以下命令:

define command{ command_name mycommand command_line $USER1$/check_by_ssh -p $ARG1$ -l nagios -i /etc/nagios2/keys/key1 -H $HOSTADDRESS$ -v -C 'source $USER10$ ; command.py -a get --alert-name $ARG2$ -q' } 

问题是,看来nagios正在用分号parsing命令,并产生无法执行的垃圾。 我也尝试了一个反斜杠\; ,无济于事。

如果我直接在shell上运行这个命令,它就可以工作。 这意味着这不是check_by_ssh的问题,而是parsingnagiosconfiguration文件的问题。

我怎样才能debugging呢? 有没有一种方法来获得所有的nagiosparsing读取configuration文件的命令的列表?

从评论讨论:

Nagios显然是在“命令”定义中的分号之后吃东西的。 pipe理这个最简单的方法是将复杂的命令包装成一个由Nagios调用的shell脚本。

作为debugging的一部分,运行的Nagiosconfiguration可以使用来自Web界面的CGI,特别是config.cgi(例如https://nagios.example.com/cgi-bin/nagios3/config.cgi )查看。 这将显示当前的一组命令,主机等

根据你的评论,你可能不喜欢我的回答

我有超过100个服务,并且为每个服务创build一个脚本将是不实际的

但我认为你应该考虑使用Nagios远程插件执行程序NRPE 。

从他们的网站:

NRPE允许您远程执行其他Linux / Unix机器上的Nagios插件。 这使您可以监视远程计算机度量标准(磁盘使用情况,CPU负载等)。 NRPE还可以与一些Windows代理插件进行通信,因此您可以在远程Windows计算机上执行脚本并检查指标

我刚刚从类似于你的设置切换到NRPE,是的,在我想要监视的许多服务器上安装和设置新软件有点痛苦。 然而,这个好处是值得的。 这是一个更可靠的设置,一旦build立,就很容易pipe理每台服务器上的Nagios检查。