Shell 需要列出Cloud Foundry中的组织和空间

Shell 需要列出Cloud Foundry中的组织和空间,shell,unix,cloud,cloud-foundry,Shell,Unix,Cloud,Cloud Foundry,我正在考虑编写一个unixshell脚本,在cloudfoundry中列出与其相关的组织和空间。但也有问题,因为我们只能在确定目标后才能列出与组织关联的空间 我不能使用以下方法一次瞄准2个组织: 因为我在Org1或Org2;do cf target-o$i;完成 因此,如果我将所有组织放在一个文本文件中,如下所示: 对于cat Orgs.txt中的i;不要使用$i;完成 请提出你的看法。谢谢大家! cf org命令将显示有关组织的信息,包括空间,因此无需单独针对每个组织: $ cf target

我正在考虑编写一个unixshell脚本,在cloudfoundry中列出与其相关的组织和空间。但也有问题,因为我们只能在确定目标后才能列出与组织关联的空间

我不能使用以下方法一次瞄准2个组织: 因为我在Org1或Org2;do cf target-o$i;完成

因此,如果我将所有组织放在一个文本文件中,如下所示:

对于
cat Orgs.txt中的i;不要使用$i;完成


请提出你的看法。谢谢大家!

cf org
命令将显示有关组织的信息,包括空间,因此无需单独针对每个组织:

$ cf target
API endpoint:   https://api.local.pcfdev.io
API version:    2.65.0
User:           admin
No org or space targeted, use 'cf target -o ORG -s SPACE'

$ cf org pcfdev-org
Getting info for org pcfdev-org as admin...
OK

pcfdev-org:
              domains:        local.pcfdev.io, tcp.local.pcfdev.io
              quota:          default (102400M memory limit, unlimited instance memory limit, 100 routes, -1 services, paid services allowed, unlimited app instance limit, unlimited route ports)
              spaces:         pcfdev-space
              space quotas:
我认为您可以简单地迭代组织列表,获取每个组织的空格,然后进行一点字符串替换,以适当的组织名称在空格列表前面:

$ for org in $( cf orgs | tail +4 ); do \
    cf org "$org" | grep spaces | sed "s/spaces/$org/"; \
  done
         demos:         spring-cloud, services, chaos-engineering
              pcfdev-org:         pcfdev-space
          system:         system

我看了一下名单,但没有发现任何东西不能提供比你要求的更多的信息。我能很快找到的最接近的是。

cf org命令将显示有关组织的信息,包括空间,因此无需单独针对每个组织:

$ cf target
API endpoint:   https://api.local.pcfdev.io
API version:    2.65.0
User:           admin
No org or space targeted, use 'cf target -o ORG -s SPACE'

$ cf org pcfdev-org
Getting info for org pcfdev-org as admin...
OK

pcfdev-org:
              domains:        local.pcfdev.io, tcp.local.pcfdev.io
              quota:          default (102400M memory limit, unlimited instance memory limit, 100 routes, -1 services, paid services allowed, unlimited app instance limit, unlimited route ports)
              spaces:         pcfdev-space
              space quotas:
我认为您可以简单地迭代组织列表,获取每个组织的空格,然后进行一点字符串替换,以适当的组织名称在空格列表前面:

$ for org in $( cf orgs | tail +4 ); do \
    cf org "$org" | grep spaces | sed "s/spaces/$org/"; \
  done
         demos:         spring-cloud, services, chaos-engineering
              pcfdev-org:         pcfdev-space
          system:         system

我看了一下名单,但没有发现任何东西不能提供比你要求的更多的信息。我能很快找到的最接近的答案是。

除了克莱顿发表的好答案之外,你还可以使用
cf curl

例如:
cf curl/v2/spaces | jq.resources[].entity.name

这将直接查询spaces API,并关心您是否以组织为目标。它将显示当前用户可见的所有空间。您可以选择使用
q
属性对其进行更多过滤。更多关于这方面的信息,请参阅文档

jq位是可选的,但只过滤掉空间名


最后请注意,结果是分页的,因此如果您有超过50个请求,则需要运行多个请求或增加每页的
结果值。

除了Clayton发布的精细答案之外,您还可以使用
cf curl

例如:
cf curl/v2/spaces | jq.resources[].entity.name

这将直接查询spaces API,并关心您是否以组织为目标。它将显示当前用户可见的所有空间。您可以选择使用
q
属性对其进行更多过滤。更多关于这方面的信息,请参阅文档

jq位是可选的,但只过滤掉空间名


最后请注意,结果是分页的,因此如果您有超过50个请求,则需要运行多个请求或增加每页的
结果值。

非常感谢您的建议!谢谢你的建议!谢谢你的建议!谢谢你的建议!