ab’s blog

インフラの呟きです。

Zabbix4.0 ユーザ一覧をshellで取得

hahahahahaha

はじめに

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"
        }
    }
}

以上