명령줄에서 네트워크 인터페이스 이름과 MAC 주소를 가져옵니다.

명령줄에서 네트워크 인터페이스 이름과 MAC 주소를 가져옵니다.

명령을 실행하면

ip link | awk '{print $2}'

Ubuntu 18.04에서는 다음과 같은 결과가 나타납니다.

lo:
00:00:00:00:00:00
wlp1s0:
2c:6e:85:bf:01:00
enp2s0:
14:18:77:a3:01:02

다음과 같이 형식을 지정하고 싶습니다. (없이 lo)

wlp1s0: 2c:6e:85:bf:01:00
enp2s0: 14:18:77:a3:01:02

어떻게 해야 하나요?

답변1

MAC 주소는 다음에서 얻을 수 있습니다 /sys/class/net/<dev>/address.

$ cat /sys/class/net/enp0s3/address
08:00:27:15:dc:fd

따라서 다음과 같습니다.

find /sys/class/net -mindepth 1 -maxdepth 1 ! -name lo -printf "%P: " -execdir cat {}/address \;

나에게주세요:

enp0s3: 08:00:27:15:dc:fd
docker0: 02:42:61:cb:85:33

또는 ip한 줄 모드를 사용하면 스크립팅이 더 쉬워집니다.

$ ip -o link | awk '$2 != "lo:" {print $2, $(NF-2)}'
enp0s3: 08:00:27:15:dc:fd
docker0: 02:42:61:cb:85:33

답변2

IP 링크 사용

ip -o link | grep ether | awk '{ print $2" : "$17 }'
  • -o각 인터페이스 에 대한 온라인 결과가 제공됩니다.
  • grep ether이더넷 주소가 할당된 인터페이스만 필터링합니다.
  • awk행의 2열과 17열을 인쇄하고 그 사이에 콜론을 넣습니다 .

또는

ip -br link | grep -v LOOPBACK | awk '{ print $1 " : " $3 }'

어디

  • -brbrief인터페이스에 대한 정보를 제공합니다 .
  • grep -v LOOPBACKLOOPBACK인터페이스에만 나타나는 단어는 무시하세요 lo.
  • awk첫 번째와 세 번째 열을 인쇄합니다 .

ifconfig 사용

ifconfig | grep HW | awk '{ print $1" : "$5 }'

grep HW하드웨어 주소가 할당된 인터페이스 만 필터링됩니다.

해커 공격

grep HW아니면 grep ether실제로 무시되었습니다 lo.

루프백 인터페이스하드웨어 주소 없음그것에 할당되었습니다.

답변3

논쟁의 여지가 없다매개변수모든 줄 바꿈, 탭 및 여러 공백을 단일 공백으로 바꿉니다. 증가시킴으로써-n 2두 번째 단어마다 줄을 자릅니다. 그래서:

ip link | awk '{print $2}' | xargs -n 2

답변4

[빠른 답변]:

인터페이스 이름을 모르고 MAC 주소를 얻는 방법:

cat /sys/class/net/$(ip route show default | awk '/default/ {print $5}')/address

다음 명령은 인터페이스 이름을 반환합니다.

ip route show default | awk '/default/ {print $5}'

관련 정보