目次
はじめに
Zabbix6からAPIでグローバル正規表現を取得できるようになりました。差分の比較とかに使えるかと。
サンプル
shellで一覧を取得するサンプルです、ユーザーは特権ユーザー(Admin)が必要です。
zbx_reg.sh
#!/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": "Abc12345"}' 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": "regexp.get"' PARAMS='"params": {"output": ["regexpid", "name"],"selectExpressions": ["expression", "expression_type"],"preservekeys": true}' 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": 3' AUTH='"auth": "'$zbxauth'"' json="{$RPC,$METHOD,$PARAMS,$ID,$AUTH}" curl -sS -X POST -H "${header}" -d "${json}" ${apiurl} > $TMPFILE exit 0
実行例
結果をjqで成型しています。
$ ./zbx_reg.sh | jq ↓ { "jsonrpc": "2.0", "result": { "1": { "regexpid": "1", "name": "File systems for discovery", "expressions": [ { "expression": "^(btrfs|ext2|ext3|ext4|reiser|xfs|ffs|ufs|jfs|jfs2|vxfs|hfs|apfs|refs|ntfs|fat32|zfs)$", "expression_type": "3" } ] }, "2": { "regexpid": "2", "name": "Network interfaces for discovery", "expressions": [ { "expression": "^Software Loopback Interface", "expression_type": "4" }, { "expression": "^(In)?[Ll]oop[Bb]ack[0-9._]*$", "expression_type": "4" }, { "expression": "^NULL[0-9.]*$",以下続く
以上