我有一堆GCE实例,我想在所有这些实例上运行相同的shell命令。是否可以执行gcloud compute ssh --command="ls -al" my-instance1 my-instance2 my-instance3
?
答案 0 :(得分:2)
您可以使用gcloud compute instances list --format='value[separator=","](name,zone)'
获取如下列表:
my-instance1,my-zone1
my-instance2,my-zone2
my-instance3,my-zone3
然后你可以使用bash Substring Removal来提取逗号之前和之后的部分。
var="before,after"
before="${var%,*}"
after="${var#*,}"
全部放入循环并添加尾随'&'在后台运行:
for instance in $(gcloud compute instances list --format='value[separator=","](name,zone)'); do
name="${instance%,*}";
zone="${instance#*,}";
gcloud compute ssh $name --zone=$zone --command="ls -al" &
done
答案 1 :(得分:0)
要添加到Mike's answer,请执行以下操作而无需删除子字符串:
for i z in $(gcloud compute instances list --format='value(name, zone)'); do
gcloud compute ssh $i --command="ls -lah" --zone=$z;
done