我正在尝试安排并取消Nagios core 4.x中的停机时间。
我可以使用以下cmd为主机安排停机时间:
curl --silent --show-error --data cmd_typ=55 --data cmd_mod=2 --data host=automichost1 --data "com_data=Updating+application" --data trigger=0 --data "start_time=05-15-2016 19:00:00" --data "end_time=05-15-2016 19:15:00" --data fixed=1 --data btnSubmit=Commit --insecure http://localhost:80/nagios/cgi-bin/cmd.cgi -u "nagiosadmin:XXXXXX"
此cmd不会返回生成的停机时间ID ,只会返回一个html文件。
但要取消计划停机时间,我需要使用以下
curl --silent --show-error --data cmd_typ=78 --data cmd_mod=2 --data down_id=2 --data "com_data=Updating+application" --data btnSubmit=Commit --insecure http://localhost:80/nagios/cgi-bin/cmd.cgi -u "nagiosadmin:xxxxxxx"
这里我需要down_id来取消停机时间。在自动化脚本中,无法从任何nagios外部命令获取此停机时间ID。我还尝试了http://docs.icinga.org/latest/en/cgiparams.html上提到的以下外部命令 CMD_DEL_DOWNTIME_BY_HOST_NAME 171
但这不适用于Nagios并提供消息"抱歉,但您无权提交指定的命令。"。
我现在被困住了,无法前进。有谁知道如何实现这个目标?
答案 0 :(得分:2)
由于很长时间我没有得到我的查询的答案,我发布了我是如何解决它的。
我在nagios客户论坛上问了同样的问题并得到了答复。 JSON查询生成器对于这类事物非常方便(其中x.x.x.x是您的Core安装):
<强> X.X.X.X /的nagios / jsonquery.html 强>
JSON查询生成器简介:
labs.nagios.com/2014/06/19/expl ... -7-part-1 /
如果您想检查主机y.y.y.y是否已安排停机时间,您可以尝试以下查询(其中x.x.x.x是您的Core安装):
如果没有安排停机时间,停机列表将为空,否则它将包含主机y.y.y.y的每个计划停机时间的停机时间ID。
此外,如果您需要图形响应,请从正在运行的脚本中删除json:
答案 1 :(得分:2)
我使用此命令在Centos服务器上成功删除/取消了“停机时间ID”251到348:
for i in `seq 251 348`; do /bin/printf "[%lu] DEL_SVC_DOWNTIME;$i\n" `date +%s` > /var/spool/nagios/cmd/nagios.cmd; done