Below code to list all instances across GCP Projects PROJECTS=$(gcloud projects list --format="value(projectId)") for PROJECT in ${PROJECTS} do echo "Project: ${PROJECT}" # Extracts ACCOUNT_ID, EMAIL (==ACCOUNT_ID@...), DISABLED #ROBOTS=$(\ #gcloud compute instances list --project=${PROJECT} --format="csv(name,disks[].guestOsFeatures[0].type[],networkInterfaces.networkIP)" gcloud compute instances list --project=${PROJECT} --format="csv(name,disks.licenses.scope(licenses),networkInterfaces.networkIP,selfLink.scope(projects),status)" done
The below code is to list all service account in GCP across all Projects
for PROJECT in ${PROJECTS} do echo "Project: ${PROJECT}" # Extracts ACCOUNT_ID, EMAIL (==ACCOUNT_ID@...), DISABLED ROBOTS=$(\ gcloud iam service-accounts list \ --project=${PROJECT} \ --format="csv[no-heading](displayName.encode(\"base64\"),email,email.split(\"@\").slice(0),disabled)") for ROBOT in ${ROBOTS} do # Parse results IFS=, read ENCODED_NAME EMAIL ACCOUNT_ID DISABLED <<< ${ROBOT} NAME=$(echo -e ${ENCODED_NAME} | base64 --decode) echo " Service Account: ${NAME}" echo " Disabled: ${DISABLED}" echo " Email: ${EMAIL}" # Keys # KEYS=$(\ # gcloud iam service-accounts keys list \ # --iam-account=${EMAIL} \ # --project=${PROJECT} \ # --format="value(name.scope(keys))") #for KEY in ${KEYS} #do # echo " Key: ${KEY}" #done done done