Ange gränssnittsvariabler från Azure CLI-utdata

Nu när du har NIC-ID:t kör du az network nic show för att hämta dess information. Du behöver ingen resursgrupp här eftersom resursgruppens namn finns i Azure-resurs-ID:t.

az network nic show --ids $nicId

Det här kommandot visar all information för nätverksgränssnittet för den virtuella datorn. Dessa data omfattar DNS-inställningar, IP-information, säkerhetsinställningar och MAC-adressen. Följande fråga visar hur du hämtar de offentliga IP-adress- och undernätsobjekt-ID:erna.

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

Det här kommandot visar ett JSON-objekt som har anpassade nycklar (IP och undernät) för de extraherade värdena. Den här utdatastilen kanske inte är användbar för kommandoradsverktyg, men den hjälper till med mänsklig läsbarhet och kan användas med anpassade skript.

Om du vill använda kommandoradsverktyg ändrar du kommandot för att ta bort de anpassade JSON-nycklarna och utdata som tsv. Kommandot read bearbetar den här utdatastilen genom att läsa in resultat i flera variabler. Eftersom två värden visas på separata rader, måste kommandoavgränsaren read anges till den tomma strängen i stället för standardvärdet för mellanslag.

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

Om du inte vill använda Bash read - eller PowerShell-kommandot -split kan du ange varje variabel separat.

$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

Använd det offentliga IP-objekt-ID:t för att leta upp den offentliga IP-adressen och lagra den i en gränssnittsvariabel. Undernäts-ID:t användes för att visa hur du frågar efter och lagrar flera värden i Azure CLI. Därför behövs det inte för resten av självstudien.

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

Nu har du IP-adressen för den virtuella datorn lagrad i en gränssnittsvariabel. Kontrollera att det är samma värde som du använde för att först ansluta till den virtuella datorn.

echo $vmIpAddress