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