uni*_*kar 5 curl nagios http-post
我需要通过curl为命令行设置特定nagios主机的计划停机时间.我是这样做的吗?
这是我已经用于从命令行启用/禁用服务/主机通知的内容.
curl -d "some input here" url "user:pass"
Run Code Online (Sandbox Code Playgroud)
就像我需要为计划停机时间做的那样.现在的问题是停机时间选项需要更多选项,即启动时间,结束时间,评论等.
那么如何通过命令行中的curl完成它呢?
curl -d " some key value pair(hostname,servicename" url "username:passowrd"
Run Code Online (Sandbox Code Playgroud)
这将从命令行打开和关闭服务/主机通知.所以我想以这种方式使用curl来为特定的nagios服务器提供停机时间.
上面的脚本不起作用,因为nagios的停机时间选项需要更多的参数,我试图在脚本中注入这些参数.但它没有那样做.我们也需要提供starttime,endtime和comment值.
另外,我已经尝试了curl的选项--form和--form-string with the script ...无法通过.
理想的想法是,不是去Nagios web界面,我们想从命令行完成这件事(我们已经成功完成了服务/主机服务和通知).
希望我现在绝对清楚.
TIA
巴斯卡尔
我增强了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
Run Code Online (Sandbox Code Playgroud)
您curl只需添加更多--data(-d)参数即可发送多个表单字段值。这应该安排 Nagios 系统上的服务停机时间:
curl \
--data cmd_typ=56 \
--data cmd_mod=2 \
--data host=$HOSTNAME \
--data-urlencode "service=${SERVICENAME}" \
--data-urlencode "com_data=${COMMENT}" \
--data trigger=0 \
--data-urlencode "start_time=2011-07-31 00:00:00" \
--data-urlencode "end_time=2011-07-31 01:00:00" \
--data fixed=1 \
--data hours=2 \
--data minutes=0 \
--data btnSubmit=Commit \
$NAGIOS-URL "username:password"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15829 次 |
| 最近记录: |