APIを使用していますが、整数変数をバインドできません。以下にスクリプトを添付しますが、いくつかの説明が役に立ちます。別のスクリプトはカールを介して送信されたデータをフィルタリングし、ほとんどのデータは文字列ですが、APIはこのデータを整数に強制します。
curl \
--data '{"version":"2.0",
"method":"cmdb.object.create",
"params":{"type":"C__OBJTYPE__VIRTUAL_SERVER",
"title":"'"${name}"'",
"categories":{"C__CATG__IP": [ { "ipv4_address" : "'"${ip}"'" } ],
"C__CATG__VIRTUAL_MACHINE__ROOT": [ { "hosts": $host, "description" : "'"${ops}"'" } ]
},
"apikey":"apikey"},"id": 1 }' \
--header "Content-Type: application/json" \
https://someURL
名前は「VirtualMachine1」、ipv4_address「1.2.3.4」、ホスト736、操作「Windows 7」です。
このカールのエラーコードは次のとおりです。 code":-32600,"message":"無効なリクエスト: 提供されたリクエストは有効なjson rpcではありません。 」
$hostの代わりに数字だけを書くとうまくいくので、変数を間違ってバインドしたようです。
有効で有効な要求は次のとおりです。
curl \
--data '{"version":"2.0",
"method":"cmdb.object.create",
"params":{"type":"C__OBJTYPE__VIRTUAL_SERVER",
"title":"'"${name}"'",
"categories":{"C__CATG__IP": [ { "ipv4_address" : "'"${ip}"'" } ],
"C__CATG__VIRTUAL_MACHINE__ROOT": [ { "hosts": 123, "description" : "'"${ops}"'" } ]
},
"apikey":"apikey"},"id": 1 }' \
--header "Content-Type: application/json" \
https://someURL