Моя команда cURL возвращает мне некоторые данные json, такие как:
{
"all":[
{
"id":"1",
"actions":[
"power",
"reboot"
]
},
{
"id":"2",
"actions":[
"shutdown"
]
},
{
"id":"3",
"actions":[
"backup"
]
}
]
}
Зная только id
, как я могу вернуть значения actions
в переменную?Я знаю, как анализировать идентификаторы, но как я могу получить actions
?
Вот команда cURL:
#!/bin/bash
IDS=$(curl https://DOMAIN/API -H "X-Auth-Token: $TOKEN" | python -c "import sys, json; print [i['id'] for i in json.load(sys.stdin)['all']]")
$IDS
выведет все IDS из json.
Пример: Если я ищу id = 1
, я получу ["power", "reboot"]
Я также могу получить действия с:
#!/bin/bash
ACTIONS=$(curl -s https://DOMAIN/API -H "X-Auth-Token: TOKEN" | python -c "import sys, json, re; print [ i['allowed_actions'] for i in json.load(sys.stdin)['servers']]")
Я думал, что делаю что-то вроде этого:
#!/bin/bash
ACTIONS=$(curl -s https://DOMAIN/API -H "X-Auth-Token: TOKEN" | python -c "import sys, json, re; print [ if i['id'] == '1': i['allowed_actions'] for i in json.load(sys.stdin)['servers']]")
Но у меня есть синтаксическая ошибка.
Как я могу перевести этот код в один код командной строки?
for i in json.load(sys.stdin)['all']:
if i['id'] == '1':
print(i['actions'])