私は使うこのコマンド私のネットワークインターフェイスの名前と対応する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
同じです。もちろん、次のように使用することもできます。link
addr
join
sort
join <(ip -o -br link | sort) <(ip -o -br addr | sort) | awk '$2=="UP" {print $1,$6,$3}'
コマンドsh
置換は使用できないため、このように簡潔に説明することはできません。