Задание переменных оболочки из выходных данных CLI
Теперь, когда у вас есть идентификатор адаптера сетевого интерфейса, выполните az network nic show
для получения связанных данных. Здесь не требуется группа ресурсов, так как имя группы ресурсов содержится в идентификаторе ресурса Azure.
az network nic show --ids $nicId
Эта команда выводит все данные сетевого интерфейса виртуальной машины. Эти данные включают параметры 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-адрес" и "Подсеть") для извлеченных значений. Хотя такой подход к выводу данных может быть неподходящим для программ командной строки, он упрощает восприятие информации для пользователя и может использоваться с пользовательскими скриптами.
Чтобы использовать программы командной строки, измените команду, чтобы удалить пользовательские ключи 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-адреса для поиска общедоступного IP-адреса и сохраните его в переменной оболочки. Идентификатор подсети использовался для демонстрации того, как запрашивать и хранить несколько значений в Azure CLI. Поэтому для остальной части руководства не требуется.
vmIpAddress=$(az network public-ip show --ids $ipId \
--query ipAddress \
-o tsv)
Теперь у вас есть IP-адрес виртуальной машины, хранящийся в переменной оболочки. Идти вперед и проверка, что это то же значение, которое вы использовали для первоначального подключения к виртуальной машине.
echo $vmIpAddress