我如何仅从活动接口获取接口名称、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地址| MAC地址

例子:

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

在一行中,但仅来自活动接口(除了 lo)(对于 ubuntu 20.04)?

我努力了这个解决方案但这对我不起作用

答案1

bash这部作品中:

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

但它依赖于和 的ip输出顺序相同。当然,您可以使用with来代替:linkaddrjoinsort

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

命令sh替换不可用,因此它不可能像这样简洁。

相关内容