Reputation: 24833
I want to get public IP address for a specific virtual machine in Azure bash command line, I have used this command so far but it returns network interface information:
az vm list-ip-addresses -g dev-rg -n dev-vm
returned value:
[
{
"virtualMachine": {
"name": "dev-vm",
"network": {
"privateIpAddresses": [
"10.0.0.5"
],
"publicIpAddresses": [
{
"id": "/subscriptions/*********/resourceGroups/dev-rg/providers/Microsoft.Network/publicIPAddresses/dev-vmPublicIP",
"ipAddress": "52.142.***.***",
"ipAllocationMethod": "Dynamic",
"name": "dev-vmPublicIP",
"resourceGroup": "dev-rg"
}
]
},
"resourceGroup": "dev-rg"
}
}
]
I only need the IP address value which should be something like this: 52.142.xxx.xxx
Upvotes: 21
Views: 27527
Reputation: 31384
You can just use the CLI command az vm show -d -g resourceGroupName -n vmName --query publicIps -o tsv
to output the public IP.
It just shows like this:
Upvotes: 34
Reputation: 1817
If you want to get public IPs for many machine you can also use the az network public-ip
:
az network public-ip list -o table
Upvotes: 4
Reputation: 6609
Short Command
az vm list-ip-addresses -n SampleVM -o table
Reference:
Upvotes: 4
Reputation: 511
You could also continue with your initial idea (key points are the --query
and --output
parameters):
az vm list-ip-addresses --resource-group dev-rg --name dev-vm --query "[].virtualMachine.network.publicIpAddresses[0].ipAddress" --output tsv
As the documentation states, using az vm show --show-details
could be slow.
Upvotes: 7