How to get a list of internal IP addresses of GCE instances

Spanky picture Spanky · Jan 16, 2015 · Viewed 11.6k times · Source

I have a bunch of instances running in GCE. I want to programmatically get a list of the internal IP addresses of them without logging into the instances (locally).

I know I can run:

gcloud compute instances list

But are there any flags I can pass to just get the information I want? e.g.

gcloud compute instances list --internal-ips

or similar? Or am I going to have to dust off my sed/awk brain and parse the output?

I also know that I can get the output in JSON using --format=json, but I'm trying to do this in a bash script.

Answer

aculich picture aculich · Aug 15, 2016

The simplest way to programmatically get a list of internal IPs (or external IPs) without a dependency on any tools other than gcloud is:

$ gcloud --format="value(networkInterfaces[0].networkIP)" compute instances list
$ gcloud --format="value(networkInterfaces[0].accessConfigs[0].natIP)" compute instances list

This uses --format=value which also requires a projection which is a list of resource keys that select resource data values. For any command you can use --format=flattened to get the list of resource key/value pairs:

$ gcloud --format=flattened compute instances list