LoginSignup
8
10

More than 5 years have passed since last update.

Zabbix 特定のホストの監視を無効化するスクリプト

Last updated at Posted at 2014-08-26

やりたいこと

サーバのシャットダウンが正常に行われる際に、zabbixの監視を無効にしたい。
→正常シャットダウンでガタガタ騒ぐなよ!

がんばったこと

出来るだけ単純化したかった。あまりrubyとか諸々の言語に詳しくないので。。。。

スクリプト

以下のようなスクリプトになりました。jsonで返ってきたところを無理やり文字抽出しています。他にいい方法があればお教えください・・・・

#!/bin/sh

###################################################################
# 宣言部                                                           #
###################################################################

# 変数宣言
zabbix_server=サーバのホスト名orIP

# ホスト名
hostName=エージェントのホスト名

# アクセスURL (Zabbix フロントエンドのトップ URL)/api_jsonrpc.php
access_URL="http://$zabbix_server/zabbix/api_jsonrpc.php"

# ユーザ情報
strUser=ユーザ名
strPwd=パスワード

###################################################################
# 処理部                                                           #
###################################################################

# ユーザ認証のための情報
json='{"method":"user.login","params":{"user":"'$strUser'","password":"'$strPwd'"},"id":1,"jsonrpc":"2.0"}'

# 認証情報の取得
# 「,」区切り取得後に32桁の認証トークンを取得する
strToken=`curl -s -XGET -H "Content-Type:application/json-rpc" \
                -d $json $access_URL | cut -d "," -f 2 | cut -c 11-42`

#### 個別処理
#1.ホスト名に対応したホストIDを取得する
#無理やり「:」で分割した後に「}」前まで格納
strId=`curl -s -XGET -H "Content-Type:application/json-rpc" \
-d '{"auth":"'$strToken'","id":1,"params":{"output":"hostids","filter":{"host":"'$hostName'"}}, \
"method":"host.get","jsonrpc":"2.0"}' $access_URL | cut -d ":" -f 4 | cut -d "}" -f 1`

#2.ホストを無効化する
#status 0:enable 1:disable
curl -s -XGET -H "Content-Type:application/json-rpc" -d '{"auth":"'$strToken'","id":1,"params":{"hostid":'$strId',"status":1},"method":"host.update","jsonrpc":"2.0"}' $access_URL
8
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
10