httpsアドレスtxtファイルを含む一括カーリング要求

httpsアドレスtxtファイルを含む一括カーリング要求

私は複数の電話を持っており、電話の稼働時間を取得しようとしています。すべての電話でREST APIを有効にしており、稼働時間の値を取得するためにCURLスクリプトを実行したいと思います。 Polycomの携帯電話の価値を取得するスクリプトがあります。次のコマンドは機能しますが、3000以上のデバイスでこれを実行したいと思います。 100個のコマンドを含むスクリプトを実行すると、出力が出ますが、すべて混乱しています。 3000台のデバイスすべてに、同じユーザー名とパスワードを持つすべての電話機のIPアドレスを含むtxtファイルとExcelファイルがあります。すべてのコマンドを実行し、IPADDRESSを含むテキストファイルを取得し、要求の結果(IPADDRESS: "Status": "2000""など)を返す方法を探しています。主に簡単な方法が必要です。各IPアドレスの各カールラインの結果を表示します。

注文する

curl -d "{\"data\": [\"UpTimeSinceLastReboot\"]}" -H "Content-Type: application/json" -k https://USERNAME:PASSWORD@IPADDRESS/api/v1/mgmt/config/get

出力

{“Status”: “2000”, “data”: {"UpTimeSinceLastReboot": "<DAYS_HOURS_MINUTES_SECONDS>"}

>> /tmp/filename.txtを追加して、すべての応答を含むtxtファイルを出力できましたが、それを電話のIPアドレスと正確に一致させることはできませんでした。

答え1

すべての例では、ファイルに1行に1つのIPがあるとします。

1.カールとマジック

次のことで目標を達成できます。curl(1)そして周りの魔法

curl -d "{\"data\": [\"UpTimeSinceLastReboot\"]}" \
  -H "Content-Type: application/json" \
  -k \
  -u USERNAME:PASSWORD \
  -w ",%{remote_ip}\t" \
  <(sed 's#^#https://#;s#$#/api/v1/mgmt/config/get#' /path/to/file) \
  | tr -ds '\n\t' '\t\n'

より良い理解のために、コマンドを複数行に分けました。

  • 資格情報をURLからカールパラメータに移動しました。
  • キーはサブシェルから入力され、IPの前にプロトコルが付けられます。https://そしてルートを追加してください/api/v1/mgmt/config/get
  • -w オプションの書き込みリモートIP応答後。後で tr でその形式を使用して目的の,REMOTE_IP<TAB>形式を作成します。
  • パイプを通ってください。tr(1)応答の終わりから可能な改行を削除し、最後に改行を作成します(それはうまくいきませんが、うまくいくはずです)。

注:この例の結果は次のとおりです。

RESPONSE,IP

2. for ループ

for ip in $(cat /path/to/file)
do
  echo -ne "$ip\t"
  curl -d "{\"data\": [\"UpTimeSinceLastReboot\"]}" -H "Content-Type: application/json" -k https://USERNAME:PASSWORD@$ip/api/v1/mgmt/config/get
done

結果:

IP,RESPONSE

3. whileループ

whileループ

while read ip
do
  echo -ne "$ip\t"
  curl -d "{\"data\": [\"UpTimeSinceLastReboot\"]}" -H "Content-Type: application/json" -k https://USERNAME:PASSWORD@$ip/api/v1/mgmt/config/get
done < /path/to/file

結果:

IP,RESPONSE

関連情報