Networking

我如何僅從活動介面獲取介面名稱、ip 和 mac(lo 除外)

  • July 23, 2021

我使用這個命令來獲取我的網路介面的名稱和它們的 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 地址 | MAC地址

例子:

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

在一行中,但僅來自活動介面(lo 除外)(對於 ubuntu 20.04)?

我已經嘗試過這個解決方案,但它對我不起作用

bash這個作品中:

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

但它依賴於 和 的輸出ip順序相同。可以肯定的是,您可以使用with代替:link``addr``join``sort

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

sh命令替換不可用,所以它不能這麼簡潔。

引用自:https://unix.stackexchange.com/questions/659675