如何获取 LXC 容器的 IP 地址以实现自动化?

如何获取 LXC 容器的 IP 地址以实现自动化?

如何以可在脚本中使用的格式获取 LXC 容器的 IP 地址?

现在,命令lxc info <container>报告该信息,但采用人类可读的格式,包含大量信息。

我只想得到给定容器名称的 IP 地址。

笔记: 我复制这个问题因为Linux容器已经发生了很大的变化。

安装利西德如今(2017 年),使用非特权容器是默认做法,我认为原始问题上发布的解决方案无法解决这种情况下的问题。

无论如何,我安装了包lxc1来访问该命令lxc-info,但是该命令无法识别我的任何非特权容器。

答案1

一个本机解决方案(并不比@siloko的答案更漂亮)将是

lxc list "<name>" -c 4 | awk '!/IPV4/{ if ( $2 != "" ) print $2}'

还有其他选择awk,但是这与问题无关。

答案2

到目前为止这是最简单的方法:

lxc list -c4 --format csv <container> | cut -d' ' -f1

但也许有可能没有cut

编辑:未剪辑的bash:

a=( $(lxc list -c4 --format csv u1) ) ip4=$a[1] echo $ip4

@monstermunchkin 从上述问题中给出的提示。

答案3

lxc list | grep nameofthecontainer | egrep -o "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+"

这就是我正在使用的,我将容器名称作为变量传递。

答案4

可能有点丑但是:

lxc-info -n my-container | grep IP: | tr -d ' ' | cut -f2 -d:

只会获取 IP 地址

相关内容