gpt4 book ai didi

curl - 如何从命令行到 cu​​rl 为任何特定的 nagios 主机设置停机时间?

转载 作者:行者123 更新时间:2023-12-04 17:39:48 24 4
gpt4 key购买 nike

我需要通过 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 的停机时间选项需要更多参数,我试图在脚本中注入(inject)这些参数..但没有成功。我们也需要提供开始时间、结束时间和注释值。

另外,我已经使用该脚本尝试了名为 --form 和 --form-string 的 curl 选项..无法通过。

最基本的想法是,我们想从命令行完成这件事,而不是去 Nagios Web 界面(我们已经成功地进行了服务/主机服务和通知)。

希望我现在完全清楚。

TIA

巴斯卡尔

最佳答案

我增强了 Anders answer 以提供完整的脚本,并且不需要使用支持 --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

关于curl - 如何从命令行到 cu​​rl 为任何特定的 nagios 主机设置停机时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6842683/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com