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