Поделиться через


Задание переменных оболочки из выходных данных 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