다음을 통해 공유


CLI 출력에서 셸 변수 설정

이제 NIC ID가 있으므로 실행 az network nic show 하여 해당 정보를 가져옵니다. 리소스 그룹 이름이 Azure 리소스 ID 내에 포함되어 있으므로 여기에 리소스 그룹이 필요하지 않습니다.

az network nic show --ids $nicId

이 명령은 VM의 네트워크 인터페이스에 대한 모든 정보를 표시합니다. 이 데이터에는 DNS 설정, IP 정보, 보안 설정 및 MAC 주소가 포함됩니다. 다음 쿼리는 공용 IP 주소 및 서브넷 개체 ID를 가져오는 방법을 보여줍니다.

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

이 명령은 추출된 값에 대한 사용자 지정 키('IP' 및 '서브넷')가 있는 JSON 개체를 표시합니다. 이 출력 스타일은 명령줄 도구에는 유용하지 않을 수 있지만, 사람의 가독성에 도움이 되며 사용자 지정 스크립트와 함께 사용할 수 있습니다.

명령줄 도구를 사용하기 위해서는 사용자 지정 JSON 키 및 출력을 제거하기 위해 명령을 tsv(으)로 변경합니다. 이 read 명령은 결과를 여러 변수로 로드하여 이 출력 스타일을 처리합니다. 별도 줄에 두 값이 표시되므로, 기본값인 줄 바꿈하지 않는 공백 대신 빈 문자열로 read 명령 구분자를 설정해야 합니다.

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

Bash read 또는 PowerShell -split 명령을 사용하지 않으려면 각 변수를 별도로 설정할 수 있습니다.

$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

공용 IP 개체 ID를 사용하여 공용 IP 주소를 조회하고 이를 셸 변수에 저장합니다. 서브넷 ID는 Azure CLI에서 여러 값을 쿼리하고 저장하는 방법을 보여 주는 데 사용되었습니다. 따라서 자습서의 나머지 부분에는 필요하지 않습니다.

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

이제 가상 머신의 IP 주소가 셸 변수에 저장되었습니다. 계속해서 VM에 처음 연결하는 데 사용한 것과 동일한 값임을 검사.

echo $vmIpAddress