Udostępnij za pośrednictwem


Ustawianie zmiennych powłoki z danych wyjściowych interfejsu wiersza polecenia

Teraz, gdy masz identyfikator kontrolera interfejsu sieciowego, uruchom az network nic show w celu pobrania informacji o nim. 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 dla interfejsu sieciowego maszyny wirtualnej. Dane te 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, który ma klucze niestandardowe („IP” i „Subnet”) dla wyodrębnionych wartości. Ten styl danych wyjściowych może nie być przydatny w przypadku narzędzia wiersza polecenia, ale poprawia czytelność dla ludzi i może być używany z niestandardowymi skryptami.

Aby użyć narzędzia wiersza polecenia, zmień polecenie w celu usunięcia niestandardowych kluczy JSON i danych wyjściowych 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 musi być ustawiony na pusty ciąg, read a nie domyślny biały znak inny niż nowy wiersz.

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 przechowywany w zmiennej 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