設計書を書く際に面倒な「サーバの設定値の抜き出し」を楽にするためのコマンドです。
RHEL系
- Red Hat Enterprise
- Rocky
- Alma
など、dnfで管理するタイプのコマンドです。
{ echo -e "| インタフェース | IPv4 アドレス | ゲートウェイ | DNS |"; echo -e "| --- | --- | --- | --- |"; nmcli -t -f GENERAL.DEVICE,IP4.ADDRESS,IP4.GATEWAY,IP4.DNS device show | awk -F: '/^GENERAL.DEVICE/ {if (dev) printf "| %s | %s | %s | %s |\n", dev, addr, gw, dns; dev=$2; addr=gw=dns="-"; next} /^IP4.ADDRESS/ {addr=$2; next} /^IP4.GATEWAY/ {gw=$2; next} /^IP4.DNS/ {dns=(dns=="-" ? $2 : dns ", " $2); next} END {if (dev) printf "| %s | %s | %s | %s |\n", dev, addr, gw, dns}'; }
| インタフェース | IPv4 アドレス | ゲートウェイ | DNS |
実行と同時に、こういうマークダウンができあがります。(IPはダミーです)
| インタフェース | IPv4 アドレス | ゲートウェイ | DNS |
| ens192 | 192.0.2.10/24 | 192.0.2.1 | 8.8.8.8, 8.8.4.4 |
| ens224 | 198.51.100.50/24 | 198.51.100.1 | 1.1.1.1 |
| virbr0 | 192.168.122.1/24 | - | - |
| docker0 | 172.16.0.1/16 | - | - |
| lo | 127.0.0.1/8 | - | - |
Ubuntu系
- Debian
- Ubuntu
- LinuxMint
など、aptを用いるLinuxディストリビューションです。
Ubuntuはnmcliを用いないので、同じようにいきません。
{
echo "| インタフェース | IPv4 アドレス | ゲートウェイ | DNS |"
echo "| --- | --- | --- | --- |"
nmcli -t -f GENERAL.DEVICE,IP4.ADDRESS,IP4.GATEWAY,IP4.DNS device show | \
awk -F: '/^GENERAL.DEVICE/ {if (dev) printf "| %s | %s | %s | %s |\n", dev, addr, gw, dns; dev=$2; addr=gw=dns="-"; next}
/^IP4.ADDRESS/ {addr=$2; next}
/^IP4.GATEWAY/ {gw=$2; next}
/^IP4.DNS/ {dns=(dns=="-" ? $2 : dns ", " $2); next}
END {if (dev) printf "| %s | %s | %s | %s |\n", dev, addr, gw, dns}'
}
これの実行結果は
| インタフェース | IPv4 アドレス | ゲートウェイ | DNS |
| br-dummy01 | 10.0.0.1/16 | - | (br-dummy01): |
| docker0 | 172.16.0.1/16 | - | (docker0): |
| eth0 | 192.0.2.15/24 | 192.0.2.1 | (eth0):, 8.8.8.8, 1.1.1.1 |
| veth_abc123 | - | - | (veth_abc123): |
| veth_def456 | - | - | (veth_def456): |
| veth_ghi789 | - | - | (veth_ghi789): |
これをどっかに仕込んでおくだけでも管理は楽になります。