定義のインポート(configuration.import)について
いつも参考にさせていただいています。
定義のエクスポート、インポートを以下のドキュメントに従い、JSON で実施しようとしています。
https://www.zabbix.com/documentation/current/manual/api/reference/config...
環境
Zabbix 5.0.0
ドキュメントの「Examples」の「"source"」のように、コマンドラインに エクスポートした JSON をべた書きすると以下のように成功するのですが
# curl -X GET -H "Content-Type:application/json-rpc" -d '{"jsonrpc": "2.0","method": "configuration.import","params": {"format": "json","rules": {"hosts": {"createMissing": true,"updateExisting": true},"items": {"createMissing": true,"updateExisting": true},"triggers": {"createMissing": true,"updateExisting": true}},"source": "{\"zabbix_export\":{\"version\":\"5.0\",\"date\":\"2020-06-19T06:54:06Z\",\"groups\":[{\"name\":\"Zabbix servers\"}],\"hosts\":[{\"host\":\"sakujyo\",\"name\":\"sakujyo\",\"groups\":[{\"name\":\"Zabbix servers\"}],\"interfaces\":[{\"interface_ref\":\"if1\"}],\"inventory_mode\":\"DISABLED\"}]}}"},"auth": "{★認証ID★}","id": 1}' http://localhost/zabbix/api_jsonrpc.php
{"jsonrpc":"2.0","result":true,"id":1}#
#
host に大量の定義が入っていると、コマンドラインに記載するのは現実的ではないので、変数に入れるなりして実行したのですが、
「JSON: Syntax error.」が出力してしまいます。
(${val}には、正常にインポートできたときと同じ文字列が入っています)
# curl -X GET -H "Content-Type:application/json-rpc" -d '{"jsonrpc": "2.0","method": "configuration.import","params": {"format": "json","rules": {"hosts": {"createMissing": true,"updateExisting": true},"items": {"createMissing": true,"updateExisting": true},"triggers": {"createMissing": true,"updateExisting": true}},"source": "${val}"},"auth": "★認証ID★","id": 1}' http://localhost/zabbix/api_jsonrpc.php
{"jsonrpc":"2.0","error":{"code":-32500,"message":"Application error.","data":"Cannot read JSON: Syntax error."},"id":1}#
#
${val} を "'${val}'" にしたりしてみましたが、同様のエラーになっています。
上記のような課題を解決した方や、方法をご存じな方はいらっしゃいますでしょうか。。
また、このような、大量の定義が入っているものを configuration.import でインポートする際は、上記のように変数にいれるなりしたやり方しかないのでしょうか。
yk_taiko - 投稿数: 184
変数が意図した文字列で展開されるか、確認されてますでしょうか。
(展開時にエスケープの有無が変わったりして引っかかる可能性が考えられるため)