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)에는 -H
http 응답 헤더를 무시하는 옵션이 있으므로 다음을 사용할 수 있습니다.json -Ha id