컬 API 요청에서 JSON 데이터 구문 분석

컬 API 요청에서 JSON 데이터 구문 분석

Shodan의 API를 사용하고 있습니다.https://developer.shodan.io/api현재 네트워크 알림을 받으세요. 경고 ID를 구문 분석하기 위해 jq를 사용하고 싶습니다.

컬 요청은curl -X GET -i https://api.shodan.io/shodan/alert/info?key={API KEY}

이 요청의 출력은 다음 형식의 json 데이터입니다.

[
 {
  "name": "Test Alert",
  "created": "2017-01-09T21:53:17.104000",
  "expires": 0,
  "expiration": null,
  "filters": {
   "ip": [
    "198.20.88.870"
   ]
  },
  "id": "HKVGCP1WD79Z7W2T",
  "size": 1
 }
]

다음을 사용할 때 다음 오류가 발생합니다 curl -X GET -i https://api.shodan.io/shodan/alert/info?key={API KEY} | jq '.id'.

"parse error: Invalid numeric literal at line 1, column 9"

답변1

-i옵션은 컬이 JSON 형식이 아닌 http 응답 헤더를 포함함을 의미합니다. 이것이 구문 분석 오류의 원인이지만 제공한 json이 주어지면 []다음을 사용하여 배열을 반복하도록 지시해야 합니다.

curl 'https://api.shodan.io/shodan/alert/info?key={API KEY}' | jq '.[].id'

또는 (제 생각에는 더 직관적입니다)JSON:

curl 'https://api.shodan.io/shodan/alert/info?key={API KEY}' | json -a id

또한 json(1)에는 -Hhttp 응답 헤더를 무시하는 옵션이 있으므로 다음을 사용할 수 있습니다.json -Ha id

관련 정보