我需要通过curl 从命令行为特定nagios 主机设置计划停机时间..我该怎么做?
这是我已经用于从命令行启用/禁用服务/主机通知的东西。
curl -d "some input here" url "user:pass"
就像我需要为计划停机时间做的事情一样。现在的问题是停机时间选项需要更多选项,即开始时间、结束时间、评论等。
那么如何从命令行通过curl 来完成它呢?
curl -d " some key value pair(hostname,servicename" url "username:passowrd"
这将从命令行打开和关闭服务/主机通知。所以我想以这种方式使用curl 来为特定的nagios 服务器提供停机时间。
上面的脚本不起作用,因为 nagios 的停机选项需要更多参数,我尝试将这些参数注入脚本中..但它没有那样工作。我们还需要提供开始时间、结束时间和注释值。
另外,我已经尝试了curl的名为--form和--form-string的选项与该脚本..无法通过。
基本思想是我们不想进入 Nagios Web 界面,而是从命令行完成这件事(我们已经成功实现了服务/主机服务和通知)。
希望我现在已经完全清楚了。
TIA
Bhaskar
我增强了 Anders 的答案,以提供完整的脚本,并且不需要使用支持 --data-urlencode 的较新的curl。这还会自动计算发送的结束时间并检查请求是否已成功提交给 Nagios。此外,这还会安排主机和主机上所有服务的停机时间。
#!/bin/bash
function die {
echo $1;
exit 1;
}
echo Scheduling downtime on nagios
HOST=monitoredhost
NAGURL=https://nagios.example.com/cgi-bin/nagios3/cmd.cgi
USER=nagiosuser
PASS=nagiospassword
MINUTES=10
export MINUTES
# The following is urlencoded already
STARTDATE=`date "+%Y-%m-%d+%H%%3A%M%%3A%S"`
# This gives us the date/time X minutes from now
ENDDATE=`date "+%Y-%m-%d+%H%%3A%M%%3A%S" -d "$MINUTES min"`
curl --silent --show-error \
--data cmd_typ=86 \
--data cmd_mod=2 \
--data host=$HOST \
--data "com_data=Updating+application" \
--data trigger=0 \
--data "start_time=$STARTDATE" \
--data "end_time=$ENDDATE" \
--data fixed=1 \
--data hours=2 \
--data minutes=0 \
--data btnSubmit=Commit \
--insecure \
$NAGURL -u "$USER:$PASS" | grep -q "Your command request was successfully submitted to Nagios for processing." || die "Failed to contact nagios";
echo Scheduled downtime on nagios
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)