如何以可在脚本中使用的格式获取 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 地址