Compartir a través de


Establecer variables de shell desde la salida de la interfaz de línea de comandos

Ahora que tiene el identificador de NIC, ejecute az network nic show para obtener su información. No necesita un grupo de recursos aquí, ya 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 las direcciones IP públicas 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 que tiene claves personalizadas ("IP" y "Subred") para los valores extraídos. Aunque este estilo de salida puede no ser útil para las herramientas de línea de comandos, ayuda con la legibilidad humana y se puede usar con scripts personalizados.

Para usar herramientas de línea de comandos, cambie el comando para quitar las claves JSON personalizadas y la salida como tsv. El read comando procesa este estilo de salida cargando los resultados en varias variables. Dado que se muestran dos valores en líneas independientes, el delimitador de comandos read debe establecerse en la cadena vacía en lugar del valor predeterminado de espacio en blanco que no sea una 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

Use el identificador de objeto de IP pública para buscar la dirección IP pública y almacenarla en una variable de 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 es 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 de shell. Continúe y compruebe que es el mismo valor que usó para conectarse inicialmente a la máquina virtual.

echo $vmIpAddress