Mac 주소를 파일로 인쇄

Mac 주소를 파일로 인쇄

Bash 스크립트를 사용하여 eth0의 mac 주소를 읽고 이를 파일로 인쇄할 수 있습니까?

답변1

ifconfigMAC 주소를 포함한 인터페이스에 대한 정보가 출력됩니다.

$ ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:11:22:33:44:55  
          inet addr:10.0.0.1  Bcast:10.0.0.255  Mask:255.0.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:289748093 errors:0 dropped:0 overruns:0 frame:0
          TX packets:232688719 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:3264330708 (3.0 GiB)  TX bytes:4137701627 (3.8 GiB)
          Interrupt:17 

이것이 HWaddr원하는 것이므로 awk다음을 사용하여 필터링할 수 있습니다.

$ ifconfig eth0 | awk '/HWaddr/ {print $NF}'
00:11:22:33:44:55

파일로 리디렉션합니다.

$ ifconfig eth0 | awk '/HWaddr/ {print $NF}' > filename

답변2

최신 Linux 접근 방식은 다음과 같습니다.

ip -o link show dev eth0 | grep -Po 'ether \K[^ ]*'

현대적인 점 ifconfig이미 더 이상 사용되지 않음ip패키지의 선호도 iproute2와 Perl 정규식에 대한 옵션이 grep있습니다 .-P너비가 0인 긍정적인 LookBehind 어설션.

grep -o텍스트 추출에 적합합니다. sed전통적으로 이 목적으로 사용되었지만 Perl 스타일의 너비가 0인 어설션이 sed 대체 명령보다 더 명확하다고 생각합니다.

-o(oneline) 옵션은 실제로 필요하지 않지만 ip한 줄에 하나의 레코드를 더 깔끔하게 찾을 수 있기 때문에 네트워크 정보를 추출할 때 이 옵션을 사용하는 것을 선호합니다. 이는 보다 복잡한 일치 또는 추출(일반적으로 그렇습니다 awk) 을 수행하는 경우 -o깨끗한 스크립트에 매우 중요하므로 일관성과 공통 패턴을 위해 항상 이를 사용합니다.

편집: 10년 후 업데이트: ip이제 JSON 출력에 대한 플래그가 있습니다 . 이는 -j다음과 결합될 때 jq더욱 강력하고 읽기 쉬운 명령 파이프라인을 제공합니다 .

ip -j link show dev eth0 | jq -r '.[0].address'

-r플래그를 사용 jq하면 인용된(JSON) 문자열 대신 원시 문자열이 출력됩니다.

답변3

#! /bin/sh

/sbin/ifconfig eth0 | perl -ne 'print "$1\n" if /HWaddr\s+(\S+)/' >file

ifconfig물론 출력에서 ​​MAC 주소를 제거할 수 있는 다른 도구도 있습니다. 나는 단지 Perl을 좋아합니다.

답변4

을 사용하면 ip -br link show eth0다음이 인쇄됩니다.

$ ip -br link show eth0 
eth0             UP             85:e2:62:9c:b2:02 <BROADCAST,MULTICAST,UP,LOWER_UP>

세 번째 열만 필요하므로 다음과 같습니다.

$ ip -br link show eth0 | awk '{ print $3 }'
85:e2:62:9c:b2:02
$ ip -br link show eth0 | awk '{ print $3 }' > file

관련 정보