Как я могу получить IP-адрес контейнера LXC в формате, который я могу использовать в сценариях?
В настоящий момент команда lxc info <container> сообщает эту информацию, но в человекообразном формате, с
Я хотел бы ТОЛЬКО ПОЛУЧИТЬ IP-адрес с именем контейнера.
GET : Я должен дублировать этот вопрос, потому что Контейнеры Linux сильно изменились.
Установка HAVE и использование непривилегированных контейнеров по умолчанию - это путь по умолчанию (2017), и я думаю, что решения, размещенные по исходному вопросу, не разрешайте проблему в этом случае.
В любом случае я установил пакет lxc1, чтобы получить доступ к команде lxc-info, но эта команда не распознает мои непривилегированные контейнеры.
До сих пор это самый простой способ:
lxc list -c4 --format csv <container> | cut -d' ' -f1
Но, возможно, это будет возможно без cut.
lxc-info --name container --ips --no-humanize
печатает IP-адреса контейнера.
Возвращаемое значение представляет собой список, поскольку контейнер может иметь более одного адреса.
Нативное решение (которое не является более красивым, чем ответ @ силоко) будет
lxc list "<name>" -c 4 | awk '!/IPV4/{ if ( $2 != "" ) print $2}'
Существуют альтернативы awk, но это касается вопроса.
lxc list | grep nameofthecontainer | egrep -o "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+"
Это то, что я использую, я передаю имя контейнера в качестве переменной.
Вероятно, немного уродливый, но:
lxc-info -n my-container | grep IP: | tr -d ' ' | cut -f2 -d:
доставит вам только IP-адрес
До сих пор это самый простой способ:
lxc list -c4 --format csv <container> | cut -d' ' -f1
Но, возможно, это будет возможно без cut.
lxc-info --name container --ips --no-humanize
печатает IP-адреса контейнера.
Возвращаемое значение представляет собой список, поскольку контейнер может иметь более одного адреса.
Нативное решение (которое не является более красивым, чем ответ @ силоко) будет
lxc list "<name>" -c 4 | awk '!/IPV4/{ if ( $2 != "" ) print $2}'
Существуют альтернативы awk, но это касается вопроса.
lxc list | grep nameofthecontainer | egrep -o "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+"
Это то, что я использую, я передаю имя контейнера в качестве переменной.
Вероятно, немного уродливый, но:
lxc-info -n my-container | grep IP: | tr -d ' ' | cut -f2 -d:
доставит вам только IP-адрес