Как получить IP-адрес контейнера LXC для автоматизации?

Как я могу получить IP-адрес контейнера LXC в формате, который я могу использовать в сценариях?

В настоящий момент команда lxc info <container> сообщает эту информацию, но в человекообразном формате, с

Я хотел бы ТОЛЬКО ПОЛУЧИТЬ IP-адрес с именем контейнера.

GET : Я должен дублировать этот вопрос, потому что Контейнеры Linux сильно изменились.

Установка HAVE и использование непривилегированных контейнеров по умолчанию - это путь по умолчанию (2017), и я думаю, что решения, размещенные по исходному вопросу, не разрешайте проблему в этом случае.

В любом случае я установил пакет lxc1, чтобы получить доступ к команде lxc-info, но эта команда не распознает мои непривилегированные контейнеры.

3
задан 1 June 2017 в 17:36

10 ответов

До сих пор это самый простой способ:

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

Но, возможно, это будет возможно без cut.

0
ответ дан 18 July 2018 в 12:21
lxc-info --name container --ips --no-humanize

печатает IP-адреса контейнера.

Возвращаемое значение представляет собой список, поскольку контейнер может иметь более одного адреса.

-1
ответ дан 18 July 2018 в 12:21

Нативное решение (которое не является более красивым, чем ответ @ силоко) будет

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

Существуют альтернативы awk, но это касается вопроса.

2
ответ дан 18 July 2018 в 12:21
lxc list | grep nameofthecontainer | egrep -o "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+"

Это то, что я использую, я передаю имя контейнера в качестве переменной.

2
ответ дан 18 July 2018 в 12:21

Вероятно, немного уродливый, но:

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

доставит вам только IP-адрес

0
ответ дан 18 July 2018 в 12:21

До сих пор это самый простой способ:

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

Но, возможно, это будет возможно без cut.

0
ответ дан 24 July 2018 в 19:57
lxc-info --name container --ips --no-humanize

печатает IP-адреса контейнера.

Возвращаемое значение представляет собой список, поскольку контейнер может иметь более одного адреса.

-1
ответ дан 24 July 2018 в 19:57

Нативное решение (которое не является более красивым, чем ответ @ силоко) будет

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

Существуют альтернативы awk, но это касается вопроса.

2
ответ дан 24 July 2018 в 19:57
lxc list | grep nameofthecontainer | egrep -o "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+"

Это то, что я использую, я передаю имя контейнера в качестве переменной.

2
ответ дан 24 July 2018 в 19:57
  • 1
    команда grep не установлена, вы можете поместить непосредственно lxc list container_name | egrep -o "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" с тем же результатом – Yonsy Solis 20 February 2018 в 19:45

Вероятно, немного уродливый, но:

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

доставит вам только IP-адрес

0
ответ дан 24 July 2018 в 19:57
  • 1
    Спасибо. Это было бы решением в ближайшее время. Кстати, идея состоит в том, чтобы использовать команду lxc info, а не lxc-info, поскольку они разные, как я объяснил. – jgomo3 1 June 2017 в 17:58
  • 2
    голый lxc недоступен в моей системе (Ubuntu 16.04), извините. – siloko 2 June 2017 в 09:55

Другие вопросы по тегам:

Похожие вопросы: