Uma solução nativa (que não é mais bonita do que a resposta do @silok) seria
lxc list "<name>" -c 4 | awk '!/IPV4/{ if ( != "" ) print }'
Existem alternativas para awk
, mas isso é tangencial à questão.
Como posso obter o endereço IP de um contêiner LXC em um formato que eu possa usar em scripts?
Neste momento, o comando lxc info <container>
reporta essa informação, mas em formato legível, com muita informação.
Gostaria de APENAS OBTER o endereço IP dado um nome de contentor.
Nota : Eu TENHO para duplicar esta questão porque o Linux Containers mudou muito.
Instalar lxd e usar contêineres sem privilégios é a maneira padrão de ir até hoje (2017) e acho que as soluções postadas na pergunta original não resolvem o problema nesse caso.
Em qualquer caso, instalei o pacote lxc1 para obter acesso ao comando lxc-info
, mas esse comando não reconhece nenhum dos meus contêineres sem privilégios.
Uma solução nativa (que não é mais bonita do que a resposta do @silok) seria
lxc list "<name>" -c 4 | awk '!/IPV4/{ if ( != "" ) print }'
Existem alternativas para awk
, mas isso é tangencial à questão.
lxc list | grep nameofthecontainer | egrep -o "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+"
Isto é o que eu estou usando, eu passo o nome do container como uma variável.
Até agora, esta é a maneira mais fácil:
lxc list -c4 --format csv <container> | cut -d' ' -f1
Mas talvez seja possível sem cut
.
Provavelmente um pouco feio, mas:
lxc-info -n my-container | grep IP: | tr -d ' ' | cut -f2 -d:
você receberá apenas o endereço IP
lxc-info --name container --ips --no-humanize
imprime os endereços IP do contêiner.
O valor retornado é uma lista porque um contêiner pode ter mais de um endereço.