Hallo,
ich versuche momentan folgendes:
Ich frage mit folgendem Befehl ab, was in meiner selbst erstellten Kategorie an Werten für ein bestimmtes Objekt gesetzt ist:
curl -s -H "Content-Type:application/json" -H "X-RPC-Auth-Session:$session_id" https://$idoitServer/idoit/src/jsonrpc.php \
--data-ascii '{"version": "2.0","params": {"language": "de", "apikey": "'$apikey'", "category": "C__CATG__CUSTOM_FIELDS_OPENVAS_C", "objID": "'$id'"},
"id": 1, "method": "cmdb.category.read" }' --noproxy $idoitServer -k > json_read_response.tmp
Dabei kommt, sofern ich die Werte bereits von Hand gesetzt habe folgendes heraus:
{"jsonrpc":"2.0","result":[{"id":"1659","objID":"1329862","html_c_1490004458057":null,"f_link_c_1490004450164":"testgruppe","f_popup_c_1490785150354":
{"id":"246","title":"normal","const":"SCAN_MODE_NORMAL","title_lang":"normal","identifier":"openvas_scan_mode"},"f_popup_c_1490606309970":
{"id":"240","title":"mittel","const":"RISC_LEVEL_MEDIUM","title_lang":"mittel","identifier":"openvas_risc_level"},"f_text_c_1490699768263":null,"f_text_c_149069979
1291":null,"f_popup_c_1491468241437":
{"prop_type":"calendar"},"f_text_c_1490699795836":null,"f_text_c_1490699801403":null,"f_text_c_1490699806285":null,"f_text_c_1491804201857":null,"description
":null}],"id":1}
Wie man sieht, sind die Werte SCAN_MODE_NORMAL und RISC_LEVEL_MEDIUM gesetzt.
Allerdings möchte ich Sie nicht von Hand setzen, sondern automatisch erkennen ob Sie fehlen und dann setzen lassen. Daher, wenn ich obigen curl-Befehl nochmal absetze und die Werte nicht bereits per Hand eingetragen habe, kommt folgende response-Nachricht:
{"jsonrpc":"2.0","result":
[{"id":"1659","objID":"1329862","html_c_1490004458057":null,"f_link_c_1490004450164":"testgruppe","f_popup_c_1490785150354":
[],"f_popup_c_1490606309970":[],"f_text_c_1490699768263":null,"f_text_c_1490699791291":null,"f_popup_c_1491468241437":
{"prop_type":"calendar"},"f_text_c_1490699795836":null,"f_text_c_1490699801403":null,"f_text_c_1490699806285":null,"f_text_c_1491804201857":null,"description
":null}],"id":1}
Die Werte sind sind wie gesagt noch nicht gesetzt, also alles ok. Mein Bash-Script merkt das und möchte nun z.B. den Wert
"f_popup_c_1490785150354":
{"id":"246","title":"normal","const":"SCAN_MODE_NORMAL","title_lang":"normal","identifier":"openvas_scan_mode"}
mit folgendem Befehl setzen:
curl -s -H "Content-Type:application/json" -H "X-RPC-Auth-Session:$session_id" https://$idoitServer/idoit/src/jsonrpc.php \
--data-ascii '{"version": "2.0","params": {"language": "de", "apikey": "'$apikey'", "category": "C__CATG__CUSTOM_FIELDS_OPENVAS_C",
"objID": "'$id'", "data": { "id":"246", "title":"normal", "const":"SCAN_MODE_NORMAL", "title_lang":"normal", "identifier":"openvas_scan_mode" }},
"id": 1, "method": "cmdb.category.update" }' --noproxy $idoitServer -k
Als Antwort vom Server kommt:
{"jsonrpc":"2.0","result":{"success":true,"message":"Category entry successfully saved"},"id":1}
Und jetzt die Überraschung: Die Werte sind in Idoit nicht gesetzt.
Wo habe ich etwas falsch gemacht?
Gruß,
Niklas Klein