如何从命令行通过curl为任何特定的nagios主机设置一定时间的停机时间?

2024-01-03

我需要通过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(使用前将#替换为@)

如何从命令行通过curl为任何特定的nagios主机设置一定时间的停机时间? 的相关文章

  • 将 Elasticsearch 结果导出到 CSV 文件

    我正在尝试将使用以下查询找到的结果导出到桌面上的 CSV 中 这是我第一次使用 Elasticsearch 和 cURL 所以我对如何做到这一点感到困惑 from elasticsearch import Elasticsearch es
  • 调用 HTTP_POST 时出现 Bad Request 错误?

    我有一个关于 SAP 功能模块 http post 的问题 我只想将 SAP 中的一条短消息 msg 发布到我之前安装的推送通知服务器 pushd Github Projekt 现在我不知道如何传递消息 我用测试符号测试了 FM CALL
  • Curl,发布当前时间

    我每小时使用 cronjob 我在 Mac 上 触发此命令 usr bin curl s data gr 0123 press OK http www myurl com myphp php gt dev null 有没有办法以 HH MM
  • Node JS 如何将图像和请求数据一起 POST 到另一个服务器/api

    我正在尝试将图像从 Node JS 应用程序发布到另一个 REST API 我在 Mongo DB 中有图像 作为二进制数组数据 由 Node JS 读取 然后应该发布到另一个 API 我面临的问题是如何将请求数据与图像一起发送 我有这个原
  • 使用 6.0 API (Android) 从服务器发送和接收数据

    我真的很困惑 我正在尝试开发一个简单的功能 允许我从服务器发送和接收数据 操作如下 在一个活动中 我对服务器上的 PHP 文件执行 HTTP POST PHP 文件 获取我发送的数据 通常是字符串 并使用通过 http 发送的参数执行查询
  • 通过 PHP Curl 调用 SoapAction

    我想通过 PHP 重新连接我的路由器 控制台命令如下 curl http 192 168 178 1 49000 upnp control WANIPConn1 H Content Type text xml charset utf 8 H
  • 使用 cURL 发布数据时出现“位置参数”错误

    如果我要在没有 data 它工作得很好 我试过谷歌 但找不到这个问题的任何答案 按照位于的指示here https guides instructure com m 4214 l 83393 how do i install and use
  • 在 .gitlab-ci.yml 上找不到curl命令

    我有一个 gitlab ci yml 文件 它创建一些 docker 镜像并将其推送到 AWS ECR 当我运行curl命令将一些工件推送到远程存储库时 它显示curl 未找到 我已经在使用 openjdk 映像进行 gradlew 构建
  • 使用 php 使用 Google Drive 进行断点续传

    我正在尝试使用以下文档在 php 中使用 Google Drive 进行可恢复上传 https developers google com drive v3 web manage uploads resumable https develo
  • GCM 卷曲操作超时

    我的服务器上存储了几个负责 GCM 操作的 php 文件 它们似乎在需要时工作得很好 但它们经常返回一个错误 指出 卷曲错误 操作在 0 毫秒后超时 0 中的 0 收到的字节数 这是服务器的问题还是我的 GCM 代码的问题 下面是我的 ph
  • 请求库在 HTTPS 代理 CONNECT 上强制使用 HTTP/1.1

    我遇到了 HTTP 代理服务器行为异常的问题 不幸的是 我无法控制代理服务器 它是 IBM 的 企业 产品 代理服务器是用于软件测试的服务虚拟化解决方案的一部分 根本问题 我认为 是代理服务器发回 HTTP 1 0 响应 我可以从 SOAP
  • 使用 Curl 登录 meetup.com

    我正在尝试自动登录 www meetup com 但没有成功 这是我的代码
  • R 对等证书无法使用给定的 CA 证书进行身份验证,Windows

    当尝试使用导入谷歌工作表时gs read 函数 我收到以下错误消息 在curl curl fetch memory url handle handle 中出错 对等 无法使用给定的 CA 证书对证书进行身份验证 我正在关注这个vignett
  • 使用 PHP 获取 XML 文件的内容 [重复]

    这个问题在这里已经有答案了 可能的重复 file get contents 与 https https stackoverflow com questions 1975461 file get contents with https 使用
  • 读取用 php 分块的范围块

    我有一个输入字段 可以在其中粘贴下载网址 之后 我使用 AJAX 请求来获取文件信息 例如 headerinfo 内容长度 mime 类型 如果我使用curl 接受范围 然后 我开始连续循环 xhr2 请求 其中包含我的 php 文件的范围
  • 使用 cURL 从 shell 发布 4GB 文件

    我尝试将文件大小为 4GB 的文件发布到 REST API cURL 不会上传此大小的文件 而是 POST 内容长度为 0 的文件 curl v i d work large png H Transfer Encoding chunked
  • Stripe API - 代理后面的 PHP Curl 请求

    我正在尝试使用 php 和curl 在代理后面向 stripe api 发出请求 如果我不在代理后面 则以下内容有效 ch curl init curl setopt ch CURLOPT URL https api stripe com
  • 将 PHP 7 安装到我的服务器后,PHP 模块无法加载

    我将 PHP 7 安装到我的服务器上 因此 我没有 etc php5 和 etc php 7 0 当我运行我的网络应用程序时 我看不到任何以前的 CURL 或 fork 起初我收到这个错误消息 消息 调用未定义的函数curl init 安装
  • 如何解决“无法加载PEM客户端证书,OpenSSL错误:02001003:系统库:fopen:没有这样的进程”错误?

    如果这个问题很愚蠢 请原谅 但我是这个领域的新手 我需要通过 SSL 从 Drupal 7 站点连接到服务 我有一个扩展名为 p12 的文件及其密码 另外 我使用 PHP 7 1 1 和 Windows 7 64x 我使用以下命令将 p12
  • 使用 php ping 网站

    我想创建一个 php 脚本 它将 ping 一个域并列出响应时间以及请求的总大小 这将用于监控网站网络 我尝试过curl 这是我到目前为止的代码 function curlTest2 url clearstatcache return if

随机推荐