Compartilhar via


Definir as variáveis do shell a partir da saída da CLI

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

az network nic show --ids $nicId

Esse comando mostra todas as informações do adaptador de rede da VM. Entre esses dados estão configurações de DNS, informações de IP, configurações de segurança e o endereço MAC. A consulta a seguir mostra como obter o endereço IP público e as 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"
  ]
}

Esse comando exibe um objeto JSON que tem chaves personalizadas ('IP' e 'Sub-rede') para os valores extraídos. Embora esse estilo de saída possa não ser útil para ferramentas de linha de comando, ele ajuda na legibilidade humana e pode ser usado com scripts personalizados.

Para usar as ferramentas de linha de comando, altere o comando para remover as chaves e a saída do JSON personalizadas como tsv. O comando read processa esse estilo de saída carregando resultados em várias variáveis. Uma vez que dois valores em linhas separadas são exibidos, o comando delimitador read precisa ser definido como a cadeia de caracteres vazia em vez do padrão de espaço em branco sem novas linhas.

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

Se você não quiser usar o comando Bash read ou PowerShell -split, poderá 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 a ID de objeto de IP público para pesquisar o endereço IP público e armazená-lo em uma variável do shell. A ID da sub-rede foi usada para demonstrar como consultar e armazenar vários valores na CLI do Azure. Portanto, ela não é necessária para o restante do tutorial.

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

Agora você tem o endereço IP da VM armazenado em uma variável do shell. Vá em frente e verifique se é o mesmo valor usado por você para se conectar inicialmente à VM.

echo $vmIpAddress