スクリプトで使用できる形式でLXCコンテナーのIPアドレスを取得するにはどうすればよいですか?
現在、コマンドlxc info <container>
は、その情報を報告しますが、多くの情報を備えた人間が読める形式です。
コンテナ名が指定されたIPアドレスにのみGETにしたいです。
注:IHAVEto duplicate この質問 Linuxコンテナが大きく変わったためです。
lxdをインストールし、非特権コンテナを使用することが、今日(2017年)のデフォルトの方法であり、元の質問に投稿された解決策は解決しないと思いますこの場合の問題。
いずれにしても、コマンドlxc-info
へのアクセスを取得するためにパッケージlxc1をインストールしましたが、そのコマンドは特権のないものを認識しませんコンテナ。
pylxdは、公式のpython APIクライアントインターフェイスです 開発、サポート、および承認 LXDプロジェクトによって。
インストール手順 こちら
$ python3
Python 3.6.7 (default, Oct 22 2018, 11:32:17)
>>> from pylxd import Client
>>> client = Client()
>>> for p in client.containers.all(): print(p.name, p.state().network['eth0']['addresses'][0]['address'])
...
stretch-cc 10.76.67.242
ネイティブソリューション(@silokoの答えよりもきれいではない)は次のようになります。
lxc list "<name>" -c 4 | awk '!/IPV4/{ if ( $2 != "" ) print $2}'
awk
に代わるものがありますが、それは質問の正接です。
これまでのところ、これが最も簡単な方法です。
lxc list -c4 --format csv <container> | cut -d' ' -f1
しかし、多分それは可能です cut
なし 。
EDIT:アンカットbash:
a=( $(lxc list -c4 --format csv u1) ) ip4=$a[1] echo $ip4
上記の問題の@monstermunchkinからのヒント。
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アドレスを取得します