你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

从 CLI 输出设置 shell 变量

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

此命令显示的 JSON 对象包含适用于已提取值的自定义项(“IP”和“子网”)。 虽然此样式的输出可能不适用于命令行工具,但有助于人们阅读,可以与自定义脚本配合使用。

为了使用命令行工具,请更改该命令,删除自定义 JSON 项,并将输出更改为 tsv。 命令 read 通过将结果加载到多个变量来处理这种样式的输出。 由于在不同行中显示两个值,因此必须将 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 地址,然后将其存储在 shell 变量中。 子网 ID 用于演示如何在 Azure CLI 中查询和存储多个值。 因此,本教程的其余部分不需要它。

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

现在已将 VM 的 IP 地址存储在 shell 变量中。 继续操作,并检查它的值是否与你一开始连接到 VM 时所用的值相同。

echo $vmIpAddress