Udostępnij za pomocą


Ustawianie zmiennych powłoki z danych wyjściowych Azure CLI

Teraz, gdy masz identyfikator karty sieciowej, uruchom polecenie az network nic show , aby uzyskać jego informacje. Nie potrzebujesz tutaj grupy zasobów, ponieważ nazwa grupy zasobów jest zawarta w identyfikatorze zasobu platformy Azure.

az network nic show --ids $nicId

To polecenie wyświetla wszystkie informacje dotyczące interfejsu sieciowego maszyny wirtualnej. Te dane obejmują ustawienia DNS, informacje o adresie IP, ustawienia zabezpieczeń i adres MAC. Poniższe zapytanie pokazuje, jak uzyskać publiczny adres IP i identyfikatory obiektów podsieci.

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

To polecenie wyświetla obiekt JSON z kluczami niestandardowymi ("IP" i "Podsieć") dla wyodrębnionych wartości. Chociaż ten styl danych wyjściowych może nie być przydatny w przypadku narzędzi wiersza polecenia, ułatwia czytelność ludzką i może być używany z niestandardowymi skryptami.

Aby użyć narzędzi wiersza polecenia, zmień polecenie tak, aby usunąć niestandardowe klucze JSON i sformatować dane wyjściowe jako tsv. Polecenie read przetwarza ten styl danych wyjściowych, ładując wyniki do wielu zmiennych. Ponieważ dwie wartości są wyświetlane w osobnych wierszach, ogranicznik polecenia `read` musi być ustawiony na pusty ciąg zamiast domyślnej białej spacji, którą jest znak inny niż nowa linia.

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

Jeśli nie chcesz używać powłoki Bash read lub polecenia programu PowerShell -split , możesz ustawić każdą zmienną oddzielnie.

$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

Użyj publicznego identyfikatora obiektu IP, aby wyszukać publiczny adres IP i zapisać go w zmiennej powłoki. Identyfikator podsieci został użyty do zademonstrowania sposobu wykonywania zapytań i przechowywania wielu wartości w interfejsie wiersza polecenia platformy Azure. W związku z tym nie jest to konieczne w pozostałej części samouczka.

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

Teraz masz adres IP maszyny wirtualnej zapisany w zmiennej środowiskowej powłoki. Przejdź dalej i sprawdź, czy jest to ta sama wartość, która została użyta do początkowego nawiązania połączenia z maszyną wirtualną.

echo $vmIpAddress