
データを出力として取得するカールコマンドの例があります。これに加えて、出力には、次のデータを取得するためにカールコマンドを実行するために再利用できる別のURLも含まれています。応答の次のURLを使用して、スクリプトがプログラムで次のページのイベントを自動的に返すbashスクリプトを作成するのに役立ちます。
例:
カール -H '権限付与: フォワーダ' -XGET 'https://.loggly.com/apiv2/events/iterate?q=*&from=-10m&until=now&size=1'
出力サンプル:
{
"events": [
{
"raw": "{\"function\": \"handle\", \"publish_success\": 83, \"timestamp\": \"17-02-01 00:58:04,852149\", \"start_time\": 1485910682.351175, \"args\": \"\", \"duration\": 2501, \"message\": \"end publish run\", \"publish_fail\": 0, \"level\": \"INFO\", \"source_duration\": {\"duration\": 1, \"end_time\": 1485910682.351801}, \"feature_duration\": {\"duration\": 1427, \"end_time\": 1485910683.786751}, \"pathname\": \"/opt/loggly/web/app/alert/management/commands/alerterd.py\", \"lineno\": 329, \"cache_duration\": {\"duration\": 1, \"end_time\": 1485910684.821093}, \"action\": \"alerterd\", \"update_duration\": {\"duration\": 8, \"end_time\": 1485910684.852121}, \"end_time\": 1485910684}",
"logtypes": [
"json",
"syslog"
],
"timestamp": 1485910684852,
"unparsed": null,
"logmsg": "{\"function\": \"handle\", \"publish_success\": 83, \"timestamp\": \"17-02-01 00:58:04,852149\", \"start_time\": 1485910682.351175, \"args\": \"\", \"duration\": 2501, \"message\": \"end publish run\", \"publish_fail\": 0, \"level\": \"INFO\", \"source_duration\": {\"duration\": 1, \"end_time\": 1485910682.351801}, \"feature_duration\": {\"duration\": 1427, \"end_time\": 1485910683.786751}, \"pathname\": \"/opt/loggly/web/app/alert/management/commands/alerterd.py\", \"lineno\": 329, \"cache_duration\": {\"duration\": 1, \"end_time\": 1485910684.821093}, \"action\": \"alerterd\", \"update_duration\": {\"duration\": 8, \"end_time\": 1485910684.852121}, \"end_time\": 1485910684}",
"id": "7ce48bda-e819-11e6-808b-12a1c1f6d2c3",
"tags": [],
"event": {
"syslog": {
"severity": "Informational",
"appName": "msg",
"timestamp": "2017-02-01T00:58:04.852+00:00",
"facility": "local use 1",
"priority": "142",
"host": "127.0.0.1"
},
"json": {
"function": "handle",
"publish_success": 83,
"level": "INFO",
"timestamp": "17-02-01 00:58:04,852149",
"start_time": 1485910682.351175,
"cache_duration": {
"duration": 1,
"end_time": 1485910684.821093
},
"update_duration": {
"duration": 8,
"end_time": 1485910684.852121
},
"duration": 2501,
"pathname": "/opt/loggly/web/app/alert/management/commands/alerterd.py",
"end_time": 1485910684,
"source_duration": {
"duration": 1,
"end_time": 1485910682.351801
},
"action": "alerterd",
"message": "end publish run",
"publish_fail": 0,
"feature_duration": {
"duration": 1427,
"end_time": 1485910683.786751
},
"lineno": 329
}
}
}
],
"next": "https://<subdomain>.loggly.com/apiv2/events/iterate?next=eea25ee6-0e48-4428-a544-36d6441d132c"
}
だから私たちは次のように別のコマンドを実行したいと思います:
カール -H '権限付与: フォワーダ' -XGET 'https://.loggly.com/apiv2/events/iterate?next=eea25ee6-0e48-4428-a544-36d6441d132c'
答え1
jq
コマンドを見てください。まだインストールされていない場合は、ほとんどのリポジトリで利用可能になります。コマンドラインからJSONを解析するために使用されます。マンページやここから詳細情報を読むことができます。
たとえば、次のようにカールコマンドの出力をjqにパイプする場合:
curl .... | jq '.next'
次のように引用符で囲まれたURL値のみを取得できます。
"https://<subdomain>.loggly.com/apiv2/events/iterate?next=eea25ee6-0e48-4428-a544-36d6441d132c"
値の妥当性をテストしたり、他のカールまたは必要な項目に渡すことができます。
答え2
.jsonを解析してその部分を抽出するには、jq、fx、またはjshonなどのツールを使用する必要があります.next
。
ジャック:シンプルで高速なJSONパーサーです。
FX:カールで使用するように設計されたJSONパーサー。
ジェイソン:本当に速くて軽いJSONパーサーです。
これにより、bashスクリプト(jqを使用)は次のように簡単になります。
#!/bin/bash
JSONF="filewithurl.json"
curl $(jq -r ".next" < ${JSONF}) -H 'Authorization: bearer '
参考までに未テストお客様の URL が不完全なため、セキュリティやコードの漏洩によるものと推定されます。