簡體   English   中英

bash 中的 curl 請求的循環列表

[英]Loop through list for curl requests in bash

我有一個 bash 腳本,它發送一個 curl 請求並顯示響應。

    #!/bin/bash

token=$(curl -k -X GET \
'https://v.mytesting.io/oauth/token?grant_type=password&username=user1&password=123' \
-H 'Authorization: Basic 12345678' \
-H 'Host: v.mytesting.io.io')
v=$( jq -r ".access_token" <<<"$token" )

ts=$(curl -k -X POST \
https://timeseries.mytimeseries.io/v5/time_series/query \
-H 'Authorization: Bearer '"$v" \
-H 'Content-Type: application/json' \
-H 'Host: timeseries.mytimeseries.io' \
-H 'tenant: 123-123-123' \
-d '{"operation" : "raw","responseFormat" : "kairosDB","startTime": "1d-ago","stopTime": "now","tagList" : [ {"tagId" : "V.S.23164117.AVG.10M"}]}')


p=$(jq '.queries[].sample_size, .queries[].results[].name' <<<"$ts")
echo "$p"

我當前的 output 只是一個值和 tagId 的名稱。 我的查詢只允許 1 個 tagId(您可以在上面看到)

我希望能夠設置 tagId 的列表。 然后,當我運行此腳本時,它應該遍歷 tagId 的列表並執行 curl 請求,用列表中的每個值替換 VS23164117.AVG.10M。 然后 output 將整個結果列表放入一個文件中。

列表會是這樣 - (我希望能夠將此列表輸入到單獨的文件中,並且 bash 腳本調用該文件。有時此列表可能有幾百行。

  • VS23164117.AVG.10M
  • VS23164118.AVG.10M
  • VS23164119.AVG.10M
  • VS23164115.AVG.10M
  • VS23164114.AVG.10M

output 想這樣看。

  • 值 tagId
  • 值 tagId
  • 值 tagId
  • 100 VS23164117.AVG.10M
  • ETC..

感謝您的任何幫助

您可以使用小腳本遍歷標簽列表。 我不是 100% 干凈的 output 格式。 您可以更改“回聲”以匹配所需的格式。

請注意對引號的細微更改以允許在正文中進行變量擴展。

標簽將存儲在一個文件中,例如 tags.txt

V.S.23164117.AVG.10M
V.S.23164118.AVG.10M
V.S.23164119.AVG.10M

腳本將使用該文件

#! /bin/bash
   # Use user defined list of tags
tags=tags.txt
token=$(curl -k -X GET \
'https://v.mytesting.io/oauth/token?grant_type=password&username=user1&password=123' \
-H 'Authorization: Basic 12345678' \
-H 'Host: v.mytesting.io.io')
v=$( jq -r ".access_token" <<<"$token" )

for tag in $(<$tags) ; do
ts=$(curl -k -X POST \
https://timeseries.mytimeseries.io/v5/time_series/query \
-H 'Authorization: Bearer '"$v" \
-H 'Content-Type: application/json' \
-H 'Host: timeseries.mytimeseries.io' \
-H 'tenant: 123-123-123' \
-d '{"operation" : "raw","responseFormat" : "kairosDB","startTime": "1d-ago","stopTime": "now","tagList" : [ {"tagId" : "'"$tag"'"}]}')

    p=$(jq '.queries[].sample_size, .queries[].results[].name' <<<"$ts")

    echo "$tag $p"
done

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM