Share via


Definir variáveis de shell a partir da saída da CLI

Agora que tem o ID do NIC, execute az network nic show para obter as respetivas informações. Você não precisa de um grupo de recursos aqui, pois o nome do grupo de recursos está contido na ID de recurso do Azure.

az network nic show --ids $nicId

Este comando mostra todas as informações da interface de rede da VM. Estes dados incluem as definições de DNS, informações de IP, definições de segurança e o endereço MAC. A consulta a seguir mostra como obter o endereço IP público e IDs de objeto de sub-rede.

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

Este comando mostra um objeto JSON que tem chaves personalizadas (“IP” e “Sub-rede”) para os valores extraídos. Embora este estilo de saída possa não ser útil para ferramentas de linha de comandos, facilita a leitura humana e pode ser utilizado com scripts personalizados.

Para poder utilizar ferramentas de linha de comandos, altere o comando no sentido de remover as chaves JSON personalizadas e a saída como tsv. O read comando processa esse estilo de saída carregando resultados em várias variáveis. Como dois valores são exibidos em linhas separadas, o read delimitador de comando deve ser definido como a cadeia de caracteres vazia em vez do padrão de espaço em branco não nova.

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

Se não quiser usar o comando Bash read ou PowerShell -split , você pode definir cada variável separadamente.

$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

Use o ID do objeto IP público para procurar o endereço IP público e armazená-lo em uma variável de shell. A ID da sub-rede foi usada para demonstrar como consultar e armazenar vários valores na CLI do Azure. Portanto, não é necessário para o resto do tutorial.

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

Agora, tem o endereço IP da VM armazenado numa variável de shell. Vá em frente e verifique se é o mesmo valor que você usou para se conectar inicialmente à VM.

echo $vmIpAddress