如何从 nova 列表中获取 IP 地址

如何从 nova 列表中获取 IP 地址

从 Openstack,我只需要主机名、状态和 IP 地址等输出,但我得到的是主机名、状态和 id=ipaddress

    nova list | grep Hostname1 | awk '{print $4,$6,$12}'

    Output : 
         Hostname1   Active net1=10.192.1.22

我只想要主机名、状态和 IP,如下所示

  Expecting output 1 :
        Hostname1   Active   10.192.1.22

  Expecting output 2:
        Hostname1   Active  net1   10.192.1.22
        Hostname2   Active  net2   10.192.1.23

提前致谢

答案1

以下是我的做法。我不是脚本专家...

nova list | grep au-dev | awk '{ split($12, v, "="); print $4,$6,v[1],v[2]}'

输出

   bcollins@home:~/openstack$ nova list | grep au-dev | awk '{ split($12, v, "="); print $4,$6,v[1],v[2]}'
    au-dev ACTIVE bcollins_net 10.10.0.13,

答案2

新的openstackCLI 命令有很好的选项可以为你完成大部分过滤工作

openstack server list --help

List servers

optional arguments:
  -h, --help            show this help message and exit
...
  --name <name-regex>   Regular expression to match names
...
output formatters:
  output formatter options

  -f {csv,json,table,value,yaml}, --format {csv,json,table,value,yaml}
                        the output format, defaults to table
  -c COLUMN, --column COLUMN
                        specify the column(s) to include, can be repeated

所以

openstack server list --name '.*webs.*' -f value -c Name -c Status -c Networks

但要获得浮动 IP 仍然需要一些额外的awk或类似的操作:

openstack server list --name '.*webs.*' -f value -c Networks | awk '{print $2}'

相关内容