6

コマンドラインから特定の nagios ホストのスケジュール ダウンタイムを curl で設定する必要があります..どうすればいいですか?

これは、コマンドラインからのサービス/ホスト通知の有効化/無効化に既に使用しているものです。

curl -d "some input here" url "user:pass" 

同様に、ダウンタイムをスケジュールする必要があります。問題は、ダウンタイムオプションがより多くのオプション、つまり開始時刻、終了時刻、コメントなどを必要とすることです.

では、コマンドラインから curl で実行するにはどうすればよいでしょうか?

curl -d " some key value pair(hostname,servicename" url "username:passowrd"

コマンドラインからサービス/ホスト通知をオンまたはオフにします。したがって、この方法でcurlを使用して、特定のnagiosサーバーにダウンタイムを提供したいと考えています。

Nagiosのダウンタイムオプションがより多くのパラメータを取り、スクリプトにそれらを注入しようとしたため、上記のスクリプトは機能しません..しかし、そのようには機能しませんでした.開始時間、終了時間、およびコメント値も提供する必要があります.

さらに、そのスクリプトで --form および --form-string と呼ばれるcurlのオプションを試しました..通過できません。

基本的なアイデアは、Nagios Web インターフェイスに移動する代わりに、コマンド ラインからこのことを実行することです (サービス/ホスト サービスと通知に成功しました)。

私が今完全に明確であることを願っています。

ティア

バスカー

4

4 に答える 4

6

完全なスクリプトを提供し、--data-urlencode をサポートする新しい curl を使用する必要がないように、Anders の回答を強化しました。これは、送信の終了時刻も自動的に計算し、リクエストが 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
于 2012-02-08T17:13:58.997 に答える
3

引数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"
于 2011-07-31T10:16:22.780 に答える
1

サレルの回答をさらに強化しました。

  • Nagios 3.5.1 で動作するようにしました (cmd_typ の変更、childoptions の追加、日付形式の変更)。
  • madeHOSTUSERコマンドライン引数
  • $USER (現在のユーザー) をデフォルトとして使用
  • パスワードプロンプトを追加 (ハードコードされたパスワードなし)
  • nagios メッセージに作成者を追加

私のバージョン:

#!/bin/bash

# Bash script to schedule downtime for Host
# source: http://stackoverflow.com/a/9198181
# Author: Sarel Botha http://stackoverflow.com/users/35264/

function die {
  echo $1;
  exit 1;
}

if [ $# -lt 1 ]; then
  echo "$0 <host> [<user>]"
  exit 0;
elif [ $# -ge 2 ]; then
  USER=$2
fi

HOST=$1
NAGURL=https://nagios.example.com/nagios3/cgi-bin/cmd.cgi
MINUTES=30

echo Scheduling downtime on nagios for $HOST

export MINUTES

# read password
read -s  -p "Password for $USER:" PASS
echo ""  # newline after prompt

# The following is urlencoded already
STARTDATE=`date "+%d-%m-%Y+%H%%3A%M%%3A%S"`
# This gives us the date/time X minutes from now
ENDDATE=`date "+%d-%m-%Y+%H%%3A%M%%3A%S" -d "$MINUTES min"`
curl --silent --show-error \
    --data cmd_typ=55 \
    --data cmd_mod=2 \
    --data host=$HOST \
    --data "com_author=$USER" \
    --data "com_data=reboot+due+to+security+updates" \
    --data trigger=0 \
    --data "start_time=$STARTDATE" \
    --data "end_time=$ENDDATE" \
    --data fixed=1 \
    --data hours=2 \
    --data minutes=0 \
    --data childoptions=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
于 2015-04-09T07:02:26.610 に答える
0

これを Nagios で動作させるには、「data host=$HOST」の下に行を追加する必要がありました。

--data "com_author=Automatic+Downtime" \

それがなければ、私の Nagios はダウンタイムを受け入れません。

于 2014-09-30T11:07:17.930 に答える