Establecimiento de variables de shell desde la salida de la CLI

Ahora que tiene el identificador del elemento NIC, ejecute az network nic show para obtener su información. No es necesario un grupo de recursos en este caso, puesto que el nombre del grupo de recursos está incluido en el identificador de recurso de Azure.

az network nic show --ids $nicId

Este comando muestra toda la información de la interfaz de red de la máquina virtual. Estos datos incluyen la configuración de DNS, la información de IP, la configuración de seguridad y la dirección MAC. En la consulta siguiente se muestra cómo obtener la dirección IP pública y los identificadores de objeto de subred.

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 muestra un objeto JSON con claves personalizadas ("IP" y "Subnet") para los valores extraídos. Aunque este estilo de salida puede no ser útil para herramientas de la línea de comandos, es legible y se puede usar con scripts personalizados.

Para utilizar herramientas de la línea de comandos, cambie el comando y elimine las claves JSON personalizadas y la salida como tsv. El comando read procesa este estilo de salida cargando los resultados en varias variables. Puesto que los dos valores se muestran en líneas independientes, el delimitador del comando read se debe establecer en la cadena vacía, en lugar del valor predeterminado de espacio en blanco distinto de nueva línea.

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

Si no desea usar el comando de Bash read o PowerShell -split, puede establecer cada variable por separado.

$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

Utilice el identificador del objeto dirección IP pública para buscar la dirección IP pública y almacenarla en una variable del shell. El identificador de subred se usó para mostrar cómo consultar y almacenar varios valores en la CLI de Azure. Por lo tanto, no será necesario para el resto del tutorial.

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

Ahora tiene la dirección IP de la máquina virtual almacenada en una variable del shell. Continúe y compruebe que es el mismo valor que utilizó para conectarse inicialmente a la máquina virtual.

echo $vmIpAddress