활성 인터페이스에서만 인터페이스 이름, 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

한 줄에 있지만 활성 인터페이스에서만 가능합니다(lo 제외)(우분투 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대체를 사용할 수 없으므로 이렇게 간결하게 설명할 수는 없습니다.

관련 정보