Partager via


Définir des variables shell à partir de la sortie CLI

Maintenant que vous avez l’ID de carte réseau, exécutez az network nic show pour obtenir ses informations. Vous n’avez pas besoin d’un groupe de ressources ici, car le nom du groupe de ressources est contenu dans l’ID de ressource Azure.

az network nic show --ids $nicId

Cette commande affiche toutes les informations de l’interface réseau de la machine virtuelle. Ces données incluent des paramètres DNS, des informations d’adresse IP, des paramètres de sécurité et l’adresse MAC. La requête suivante montre comment obtenir les ID d’objet du sous-réseau et de l’adresse IP publique.

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"
  ]
}

Cette commande affiche un objet JSON qui a des clés personnalisées (« IP » et « Sous-réseau ») pour les valeurs extraites. Bien que ce style de sortie ne soit pas utile pour les outils de ligne de commande, il aide à la lisibilité humaine et peut être utilisé avec des scripts personnalisés.

Pour pouvoir utiliser les outils de ligne de commande, modifiez la commande pour supprimer les clés JSON personnalisées et sortez en tant que tsv. La commande read traite ce style de sortie en chargeant des résultats dans plusieurs variables. Étant donné que deux valeurs sont affichées sur des lignes distinctes, le délimiteur de commande read doit être défini sur la chaîne vide plutôt que sur la valeur par défaut d’un espace blanc sans saut de ligne.

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

Si vous ne souhaitez pas utiliser la commande Bash read ou PowerShell -split, vous pouvez définir chaque variable séparément.

$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

Utilisez l’ID d’objet de l’adresse IP publique pour rechercher l’adresse IP publique, puis stockez-la dans une variable shell. L’ID du sous-réseau a été utilisé pour montrer comment interroger et stocker plusieurs valeurs dans l’interface Azure CLI. Par conséquent, il n’est pas nécessaire pour le reste du didacticiel.

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

L’adresse IP de la machine virtuelle est désormais stockée dans une variable d’environnement. Vérifiez qu’il s’agit de la même valeur que vous avez utilisée pour vous connecter initialement à la machine virtuelle.

echo $vmIpAddress