#やりたいこと
サーバのシャットダウンが正常に行われる際に、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