次の方法で共有


CLI 出力からシェル変数を設定する

NIC ID を取得したら、 az network nic show を実行してその情報を取得します。 リソース グループ名は Azure リソース ID に含まれているため、ここではリソース グループは必要ありません。

az network nic show --ids $nicId

このコマンドは、VM のネットワーク インターフェイスのすべての情報を表示します。 このデータには、DNS 設定、IP 情報、セキュリティ設定、MAC アドレスが含まれます。 次のクエリは、パブリック IP アドレスとサブネット オブジェクト ID を取得する方法を示しています。

az network nic show --ids $nicId \
  --query '{IP:ipConfigurations[].publicIPAddress.id, Subnet:ipConfigurations[].subnet.id}' \
  -o json
{
  "IP": [
    "/subscriptions/.../resourceGroups/TutorialResources/providers/Microsoft.Network/publicIPAddresses/TutorialVM1PublicIP"
  ],
  "Subnet": [
    "/subscriptions/.../resourceGroups/TutorialResources/providers/Microsoft.Network/virtualNetworks/TutorialVM1VNET/subnets/TutorialVM1Subnet"
  ]
}

このコマンドは、抽出された値のカスタム キー ('IP' と 'Subnet') を持つ JSON オブジェクトを表示します。 このスタイルの出力はコマンド ライン ツールでは役に立たないかもしれませんが、人間の読みやすさに役立ち、カスタム スクリプトで使用できます。

コマンド ライン ツールを使用するには、コマンドを変更してカスタム JSON キーと出力を tsvとして削除します。 read コマンドは、結果を複数の変数に読み込むことで、このスタイルの出力を処理します。 2 つの値が別々の行に表示されるため、 read コマンド区切り記号は、改行以外の空白の既定値ではなく、空の文字列に設定する必要があります。

read -d '' ipId subnetId <<< $(az network nic show \
  --ids $nicId \
  --query '[ipConfigurations[].publicIPAddress.id, ipConfigurations[].subnet.id]' \
  -o tsv)

Bash read または PowerShell -split コマンドを使用しない場合は、各変数を個別に設定できます。

$ipId = az network nic show --ids $nicId --query '[ipConfigurations[].publicIPAddress.id]' -o tsv
$subnetId = az network nic show --ids $nicId --query '[ipConfigurations[].subnet.id]' -o tsv

パブリック IP オブジェクト ID を使用してパブリック IP アドレスを検索し、それをシェル変数に格納します。 サブネット ID は、Azure CLI で複数の値を照会して格納する方法を示すために使用されました。 そのため、チュートリアルの残りの部分では必要ありません。

vmIpAddress=$(az network public-ip show --ids $ipId \
  --query ipAddress \
  -o tsv)

これで、VM の IP アドレスがシェル変数に格納されました。 先に進み、最初に VM に接続するときに使用した値と同じ値であることを確認します。

echo $vmIpAddress