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