나는 컬 |
{
"ssh_keys": [
{
"id": 30482248,
"fingerprint": "21:57:08:d8:41:0f:89:57:0b:96:95:64:ff:59:50:69",
"public_key": "ssh-rsa AAAA [email protected]",
"name": "User's key"
},
{
"id": 30450573,
"fingerprint": "27:0c:2e:34:63:00:13:9d:5c:26:44:15:f0:cf:15:13",
"public_key": "ssh-rsa AAAA-VirtualBox",
"name": "test1"
},
{
"id": 30485316,
"fingerprint": "28:63:11:6b:a0:c7:ae:e1:e7:98:0b:01:96:c2:f4:87",
"public_key": "ssh-rsa AAAA lessons",
"name": "rbm-mykey"
}
],
"links": {
"pages": {
"last": "https://api.digitalocean.com/v2/account/keys?page=3",
"next": "https://api.digitalocean.com/v2/account/keys?page=2"
}
},
"meta": {
"total": 59
}
}
"name" 키에서 "User's key" 값을 사용하여 "public_key"를 반환하고 싶으므로 결과는 다음과 같아야 합니다.
"ssh-rsa AAAA [email protected]"
나는 다음 명령을 시도했습니다.
curl -X GET -H "Authorization: Bearer " "https://api.digitalocean.com/v2/account/keys?page=1" | jq '.[] | .[] | .name'
하지만 "name" 키에 대한 값만 받았습니다.
답변1
jq
배열 요소가 다음과 같은 배열에서 항목을 선택하는 경우 public_key
(문자열은 명령줄에서 가져온 변수의 값으로 제공됨):ssh_keys
name
User's key
User's key
jq
$queryname
jq -r --arg queryname "User's key" '.ssh_keys[] | select(.name == $queryname).public_key'
이로 -r
인해 값이 디코딩되어 인쇄됩니다. 그렇지 않은 경우 -r
JSON으로 인코딩된(및 인용된) 값을 얻게 됩니다.
curl
위 명령을 통해 JSON 출력을 스트리밍할 수 있습니다. 주어진 문서를 입력으로 사용하면 한 줄이 생성됩니다.
ssh-rsa AAAA [email protected]