アクティブインターフェイスからのみインターフェイス名、IP、およびMACを取得する方法(Loを除く)

アクティブインターフェイスからのみインターフェイス名、IP、およびMACを取得する方法(Loを除く)

私は使うこのコマンド私のネットワークインターフェイスの名前と対応するMACアドレスを取得します。

ip -o link | awk '$2 != "lo:" {print $2, $(NF-2)}' | sed 's_: _ _'

出て:

enp2s0 XX:XX:XX:XX:XX:XX
wlp1s0 YY:YY:YY:YY:YY

IPを取得する方法は次のとおりです。

ip addr show $lan | grep 'inet ' | cut -f2 | awk '{ print $2}'

出て:

127.0.0.1/8
192.168.1.23/24

またはこれ:

ifconfig | grep "inet " | grep -Fv 127.0.0.1 | awk '{print $2}'

またはその他:

ifconfig | grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}" | grep -v 127.0.0.1 | awk '{ print $2 }' | cut -f2 -d: | head -n1

出て:

192.168.1.23

どのコマンドを使用して知ることができますか(順序は重要ではありません):

インターフェース名| IPv4アドレス|

例:

enp2s0 192.168.1.23 XX:XX:XX:XX:XX:XX

1行にありますが、アクティブインターフェイスでのみ可能です(loを除く)(Ubuntu 20.04の場合)?

頑張りましたこのソリューションしかし、これは私には合わない。

ベストアンサー1

bashこの作品では:

paste <(ip -o -br link) <(ip -o -br addr) | awk '$2=="UP" {print $1,$7,$3}'

しかし、それは出力順序に依存し、ip同じです。もちろん、次のように使用することもできます。linkaddrjoinsort

join <(ip -o -br link | sort) <(ip -o -br addr | sort) | awk '$2=="UP" {print $1,$6,$3}'

コマンドsh置換は使用できないため、このように簡潔に説明することはできません。

おすすめ記事