5 - 從 CLI 輸出設定殼層變數

現在,您有了 NIC 識別碼,執行 az network nic show 可取得其資訊。 請注意,此處不需要資源群組,因為資源群組名稱包含在 Azure 資源識別碼中。

az network nic show --ids $nicId

此命令會顯示 VM 網路介面的所有資訊。 此資料包括 DNS 設定、IP 資訊、 安全性設定和 MAC 位址。 下列查詢示範如何取得公用 IP 位址和子網物件識別碼。

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"
  ]
}

此命令會顯示 JSON 物件,其中有所擷取值的自訂索引鍵 ('IP' 和 'Subnet')。 雖然這種輸出樣式可能不適用於命令列工具,但有助於我們閱讀,而且可搭配自訂指令碼使用。

若要使用命令列工具,可變更命令以移除自訂 JSON 索引鍵,然後輸出為 tsv。 這種輸出樣式可由殼層 read 命令處理,以便將結果載入多個變數中。 由於兩個值會顯示在不同的行上, read 因此命令分隔符號必須設定為空字串,而不是非換行空白字元的預設值。

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

使用公用 IP 物件識別碼來查閱公用 IP 位址,並將它儲存在殼層變數中。 子網識別碼是用來示範如何在 Azure CLI 中查詢及儲存多個值,本教學課程的其餘部分將不需要此識別碼。

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

現在您已將 VM 的 IP 位址存放在殼層變數中。 請繼續進行,並檢查它與您一開始用來連線至 VM 的值是否相同。

echo $vmIpAddress