Gcloud SDK(Ubuntu)上过滤通配符的问题



我正在尝试在实例组中解析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脚本(运行Ubuntu 1604LTS(。但是,当我尝试测试实例(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*(=表达式不允许通配符,因此无处不在(。

我无法分辨这是否是GCLOUD SDK中的错误,或者我是否缺少有关过滤器在GCP计算实例上的工作的信息。

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

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

同意Amanda的答案,但根据GCP文档 :( COLON(支持已被弃用,并将很快删除。

因此,按照下面的示例应起作用:

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/.$// 

相关内容

  • 没有找到相关文章

最新更新