Dela via


Ange gränssnittsvariabler från CLI-utdata

Nu när du har ett NIC-ID kan du köra az network nic show för att hämta informationen. 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 om nätverksgränssnittet för den virtuella datorn. Dessa data innehåller 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 "Subnet") för de extraherade värdena. Även om dessa utdata inte är användbara för kommandoradsverktyg kan de öka läsbarheten, och de kan även användas med anpassade skript.

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

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 lagras IP-adressen för den virtuella datorn 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