BASHの変数にネットワーク情報を保存する方法は?

BASHの変数にネットワーク情報を保存する方法は?

いくつかの生のネットワーク情報を別の変数に保存する必要があるbashスクリプトを作成しています。たとえば、MacアドレスとIPアドレスは、次のような別々の変数にあります。

IPADDRESS=$(some_command)
MACADDRESS=$(some_other_command)
echo "$IPADDRESS has mac address $MACADDRESS"

これは単純化された例です。いいえこのコンテンツは直接読むのではなく、排他的なプログラムに/bin/proprietary_program $IPADDRESS $MACADDRESS

Linuxでは、MACアドレスのみを文字列として、IPアドレスのみを文字列として取得する方法は?私はip可能な限りこのコマンドを使用することを好みます。

答え1

(NetworkManager)を使用する例がないので、nmcliここに追加します。

nmcli -f IP4.ADDRESS device show your_nic (returns all IPv4 addresses)
nmcli -f IP6.ADDRESS device show your_nic (returns all IPv6 addresses)
nmcli -f GENERAL.HWADDR device show your_nic (returns MAC address)

答え2

次の出力を解析できますip address。私の出力は次のとおりです(これを行うことができることを示すために追加のIPアドレスを追加しました)。

$ ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp10s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether f0:79:59:dc:c4:bf brd ff:ff:ff:ff:ff:ff
3: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether f0:79:59:dc:c3:75 brd ff:ff:ff:ff:ff:ff
    altname enp0s25
    inet 192.168.1.100/24 brd 192.168.1.255 scope global noprefixroute eno1
       valid_lft forever preferred_lft forever
    inet 129.168.1.101/24 scope global eno1
       valid_lft forever preferred_lft forever
    inet6 fe80::f279:59ff:fedc:c375/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

正規表現を使用してアドレスを見つけると、最終的にIPv4アドレスのリストが生成されます。

$ IPV4=$(ip address | grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\/[0-9]{1,2}' )

$ echo $IPV4
127.0.0.1/8 192.168.1.100/24 129.168.1.101/24

$ for i in $IPV4; do echo $i; done
127.0.0.1/8
192.168.1.100/24
129.168.1.101/24

IPv6(必要な場合)とMACの正規表現を作成するだけです。

関連情報