проблемы с подстановочными знаками фильтра в gcloud sdk (ubuntu)

Я пытаюсь проанализировать внешние IP-адреса вычислительных экземпляров GCP в группе экземпляров, а затем разделить их запятыми, чтобы вставить в файл конфигурации для программного обеспечения.

Я создал команду, которая успешно выполняет это на моем 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.

ожидаемый результат на Ubuntu1604LTS при использовании подстановочного знака:
x.x.x.x,y.y.y.y,z.z.z.z (такой же, как на Mac)

фактический результат при использовании подстановочного знака:


person amanda    schedule 31.07.2019    source источник
comment
Возможно, попробуйте избежать звездочки ... см. stackoverflow.com/questions/102049/   -  person Kolban    schedule 01.08.2019


Ответы (2)


Согласен с ответом Аманды, но согласно gcp документация : поддержка (двоеточие) устарела и вскоре будет прекращена.

Поэтому вместо этого в соответствии с примером здесь ниже должно сработать:

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

оказывается, что пробелы, которые были между парой ключей и круглыми скобками, необходимо было удалить, чтобы это работало в Ubuntu:

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