Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud platform gcloud sdk(ubuntu)上的筛选器通配符问题_Google Cloud Platform_Gcloud_Google Cloud Sdk - Fatal编程技术网

Google cloud platform gcloud sdk(ubuntu)上的筛选器通配符问题

Google cloud platform gcloud sdk(ubuntu)上的筛选器通配符问题,google-cloud-platform,gcloud,google-cloud-sdk,Google Cloud Platform,Gcloud,Google Cloud Sdk,我试图解析实例组中GCP计算实例的外部IP地址,然后用逗号将它们分开,以插入到软件的配置文件中 我已经在Mac 10.14.6上创建了一个成功执行此操作的命令: gcloud compute instances list --filter="name :(name-of-instance*)" \ --format="get(networkInterfaces[0].accessConfigs[0].natIP)" \ | tr '\n' ',' | sed s/.$// 它会立即输出一个列表

我试图解析实例组中GCP计算实例的外部IP地址,然后用逗号将它们分开,以插入到软件的配置文件中

我已经在Mac 10.14.6上创建了一个成功执行此操作的命令:

gcloud compute instances list --filter="name :(name-of-instance*)" \
--format="get(networkInterfaces[0].accessConfigs[0].natIP)" \
| tr '\n' ',' | sed s/.$//
它会立即输出一个列表: x、 x.x.x,y.y.y.y,z.z.z.z

然后将该命令放入bash脚本中,该脚本将在运行ubuntu1604lts的计算实例上运行。 但是,当我在测试实例Ubuntu 1604LTS上尝试时,前面的带有通配符*的命令不会输出任何内容

我已通过删除通配符并指定其中一个实例的全名对此进行了测试,它确实正确输出了该实例的外部IP:

gcloud compute instances list --filter="name :(name-of-instance-full)" \
--format="get(networkInterfaces[0].accessConfigs[0].natIP)" \
| tr '\n' ',' | sed s/.$//
我尝试了几种方法,包括name:instanceName*、name~^instanceName*、name=instanceName*不允许为=表达式使用通配符,因此它到处都会失败

我无法判断这是否是gcloudsdk中的一个bug,或者我是否遗漏了一些关于过滤器如何在GCP计算实例上工作的信息

使用通配符时Ubuntu1604LTS的预期结果: x、 x.x.x,y.y.y.y,z.z.z与Mac上的相同

使用通配符时的实际结果:

结果表明,为了在Ubuntu中实现这一功能,需要删除密钥对和括号之间的空格:

gcloud compute instances list --filter="name:instance-name*" \
--format="get(networkInterfaces[0].accessConfigs[0].natIP)" \
| tr '\n' ',' | sed s/.$// 

在Ubuntu中,需要删除密钥对和括号之间的空格才能使其正常工作:

gcloud compute instances list --filter="name:instance-name*" \
--format="get(networkInterfaces[0].accessConfigs[0].natIP)" \
| tr '\n' ',' | sed s/.$// 
同意的答案,但根据gcp:冒号支持已被弃用,不久将被放弃

因此,根据下面的示例,应该可以:

gcloud compute instances list --filter="name~instance-name" \
--format="get(networkInterfaces[0].accessConfigs[0].natIP)" \
| tr '\n' ',' | sed s/.$//
同意的答案,但根据gcp:冒号支持已被弃用,不久将被放弃

因此,根据下面的示例,应该可以:

gcloud compute instances list --filter="name~instance-name" \
--format="get(networkInterfaces[0].accessConfigs[0].natIP)" \
| tr '\n' ',' | sed s/.$//

也许试着避开星号。。。看,也许试着避开星号。。。看见