nmcliコマンドで特定のUUIDを取り出すには

systemdのNetworkManagerです。

nmcliコマンド。

ネットワーク関係の設定で、こちらを使用する頻度が高くなってきました。

JSON出力はありませんが、–terseや–fields、–get-valuesオプションで出力を加工できるようです。

そのあたりを記録させて頂きます。


nmcliコマンド覚書

一覧表示

nmcli g
nmcli n
nmcli r
nmcli c
nmcli d
# こちらはあまり使用しません
nmcli a
nmcli m

本当によく使用するのは、nmcli deviceと、nmcli connectionかと思います。

特定のコネクションのUUIDのみ表示

ずばり。

# enp3s0はコネクション名になります
nmcli -g GENERAL.UUID c s enp3s0
# 丁寧に書きますと
nmcli -g GENERAL.UUID connection show enp3s0

こちらを使用して、ネットワークの設定変更が行えそうです。

静的IPアドレスの割当

NetworkManagerを使用している場合、静的IPアドレスの割当は次のコマンドになります。

nmcli
nmcli device status
nmcli connection show
# コネクション名を指定 この場合 enp3s0 がコネクション名になります
CONUID=`nmcli -g GENERAL.UUID c s enp3s0`
echo ${CONUID}
sudo nmcli connection modify ${CONUID} ipv4.addresses <IPアドレス>/24
sudo nmcli connection modify ${CONUID} ipv4.gateway <ゲートウェイアドレス>
sudo nmcli connection modify ${CONUID} ipv4.dns "<DNSアドレス>"
sudo nmcli connection modify ${CONUID} ipv4.method manual
# こちらを実行すると即IPアドレスが変わりますの注意
sudo nmcli connection up ${CONUID}

今後、様々なディストリビューションでこちらが使われる感じです。


近年、たとえばlsblkコマンドは-JオプションでJSON出力が可能です。

その場合、jq等のJSONパーサーで特定の変数を取り出すことが可能のため、パイプでjqに渡して、出力結果の加工が可能かと思います。

–terseの場合は、デリミタ、区切り文字を判別して変数を取り出す感じですが、CSVファイルのように一覧の記録用という感じがします。

そしてnmcliコマンドの場合、showコマンドと-gオプションを組み合わせて、特定のフィールド値を抜き出す方法が正解な気がします。

showコマンドでかなり細かい内容が表示されますので、その中から必要なフィールドを選択するために、-gオプションを使うような感じかと思います。

systemdの役割が大きくなるにつれて、~cliコマンドは、今後もっと増える感じでしょうか。動向を見ながら、正しい使い方が学べればと思います。

スポンサーリンク

フォローする

スポンサーリンク