はじめに
shellを使ってzabbixのユーザー情報を取得します。shellの中でcurlを使ってzabbix-apiを呼び出しています。 前提としてjqコマンドが必要になります。REDHAT8なら標準のyumでインストール可、REDHAT7なら標準yumでは入れられないので別途用意する必要があります。
サンプルshell
メディアの情報まで取得するには「selectMedias」を利用します。
#!/bin/bash ################################################################# TMPFILE=tmp.tmp header='Content-Type:application/json-rpc' apiurl='http://localhost/zabbix/api_jsonrpc.php' RPC='"jsonrpc":"2.0"' # ログイン METHOD='"method":"user.login"' PARAMS='"params":{"user": "Admin","password": "pass"}' ID='"id": 1' AUTH='"auth": null' json="{$RPC,$METHOD,$PARAMS,$ID,$AUTH}" curl -sS -X POST -H "${header}" -d "${json}" ${apiurl} > $TMPFILE zbxauth=$(jq -r .result < $TMPFILE) # ユーザ一覧取得 METHOD='"method": "user.get"' PARAMS='"params": {"output": "extend","selectMedias": "extend","selectUsrgrps": "extend"}' ID='"id": 2' AUTH='"auth": "'$zbxauth'"' json="{$RPC,$METHOD,$PARAMS,$ID,$AUTH}" curl -sS -X POST -H "${header}" -d "${json}" ${apiurl} # ログアウト METHOD='"method":"user.logout"' PARAMS='"params":[]' ID='"id": 4' AUTH='"auth": "'$zbxauth'"' json="{$RPC,$METHOD,$PARAMS,$ID,$AUTH}" curl -sS -X POST -H "${header}" -d "${json}" ${apiurl} > $TMPFILE exit 0 ***
shell実行結果
{ "jsonrpc": "2.0", "result": [ { "userid": "1", "alias": "Admin", "name": "Zabbix", "surname": "Administrator", "url": "", "autologin": "1", "autologout": "0", "lang": "ja_JP", "refresh": "30s", "type": "3", "theme": "dark-theme", "attempt_failed": "0", "attempt_ip": "2001:****", "attempt_clock": "1691169505", "rows_per_page": "500", "medias": [ { "mediaid": "1", "userid": "1", "mediatypeid": "4", "sendto": "admin@localhost", "active": "0", "severity": "63", "period": "1-7,00:00-24:00" } } }
以上