我用这个命令获取我的网络接口的名称及其 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来代替:link
addr
join
sort
join <(ip -o -br link | sort) <(ip -o -br addr | sort) | awk '$2=="UP" {print $1,$6,$3}'
命令sh
替换不可用,因此它不可能像这样简洁。