Share via


Impostare le variabili della shell dall'output dell'interfaccia della riga di comando

Ora che è disponibile l'ID della scheda di interfaccia di rete, eseguire az network nic show per ottenere le relative informazioni. Non è necessario un gruppo di risorse perché il nome del gruppo di risorse è contenuto nell'ID risorsa di Azure.

az network nic show --ids $nicId

Questo comando mostra tutte le informazioni per la scheda di interfaccia di rete della macchina virtuale. Questi dati includono impostazioni DNS, informazioni IP, impostazioni di sicurezza e indirizzo MAC. La query seguente illustra come ottenere l'indirizzo IP pubblico e gli ID oggetto subnet.

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

Questo comando visualizza un oggetto JSON avente chiavi personalizzate ('IP' e 'Subnet') per i valori estratti. Questo stile di output potrebbe non essere utile per gli strumenti da riga di comando, ma consente di migliorare la leggibilità e può essere usato con script personalizzati.

Per usare gli strumenti da riga di comando, modificare il comando per rimuovere le chiavi JSON personalizzate e restituire un output in formato tsv. Il read comando elabora questo stile di output caricando i risultati in più variabili. Poiché due valori vengono visualizzati in righe separate, il read delimitatore di comando deve essere impostato sulla stringa vuota anziché sull'impostazione predefinita di spazi vuoti non di nuova riga.

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

Se non si vuole usare il comando Bash read o PowerShell -split , è possibile impostare ogni variabile separatamente.

$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

Usare l'ID oggetto IP pubblico per cercare l'indirizzo IP pubblico e archiviarlo in una variabile della shell. L'ID subnet è stato usato per illustrare come eseguire query e archiviare più valori nell'interfaccia della riga di comando di Azure. Non è quindi necessario per il resto dell'esercitazione.

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

Ora l'indirizzo IP della macchina virtuale è archiviato in una variabile della shell. Procedere e verificare che sia lo stesso valore usato per connettersi inizialmente alla macchina virtuale.

echo $vmIpAddress