你当前正在访问 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