ifconfig의 출력에서 MAC 주소를 추출하는 가장 좋은 방법은 무엇입니까?
ifconfig
의 출력 에서 MAC 주소를 추출하는 가장 좋은 방법은 무엇입니까 ?
샘플 출력 :
bash-3.00# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 1F:2E:19:10:3B:52
inet addr:127.0.0.66 Bcast:127.255.255.255 Mask:255.0.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
....
....
cut, AWK 또는 다른 것을 사용해야 하며 한 방법의 장점과 단점은 무엇입니까?
아래에서 고양이를 할 수 있습니다. /sys/class/
cat /sys/class/net/*/address
특히 eth0
cat /sys/class/net/eth0/address
다음을 사용합니다.
ifconfig eth0 | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}'
-o는 grep이 표현식과 일치하는 행의 일부만 인쇄하도록합니다. [[:xdigit:]]{1,2}
1 개 또는 2 개의 16 진수와 일치합니다 (Solaris는 선행 0을 출력하지 않음).
나는 구문 분석이 훨씬 쉽기 때문에 이러한 종류의 작업에 / sbin / ip를 사용하는 것을 좋아합니다.
$ ip link show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:0c:29:30:21:48 brd ff:ff:ff:ff:ff:ff
awk를 사용하여이 출력에서 간단하게 mac 주소를 가져올 수 있습니다.
$ ip link show eth0 | awk '/ether/ {print $2}'
00:0c:29:30:21:48
더 많은 노력을 기울이고 더 많은 데이터를 구문 분석하려면 ip 명령에 -online 인수를 사용하는 것이 좋습니다. 그러면 모든 행을 새 장치로 취급 할 수 있습니다.
$ ip -o link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue \ link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000\ link/ether 00:0c:29:30:21:48 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000\ link/ether 00:0c:29:30:21:52 brd ff:ff:ff:ff:ff:ff
4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 100\ link/[65534]
5: sit0: <NOARP> mtu 1480 qdisc noop \ link/sit 0.0.0.0 brd 0.0.0.0
실제로 이점이 있는지 확실하지 않지만 간단히 awk를 사용할 수 있습니다.
ifconfig eth0 | awk '/HWaddr/ {print $5}'
OP의 예제는 Bash를 참조하므로 추가 도구를 사용하지 않고 HWaddr과 같은 필드를 추출하는 방법은 다음과 같습니다.
x=$(ifconfig eth0) && x=${x#*HWaddr } && echo ${x%% *}
첫 번째 단계에서 이것은 ifconfig의 출력을 x에 할당합니다. 두 번째 단계는 "HWaddr"앞의 모든 것을 제거합니다. 마지막 단계에서 ""(MAC 뒤의 공간) 뒤의 모든 항목이 제거됩니다.
참조 : http://www.gnu.org/software/bash/manual/bashref.html#Shell-Parameter-Expansion
Ubuntu / Debian의 경우
ifconfig | grep HW | awk '{print $5}'
Rhat 또는 CentO의 경우
ip add | grep link/ether | awk '{print $2}'
여기에 설명 된 방법 (약간 수정)을 선호합니다. http://www.askdavetaylor.com/how_do_i_figure_out_my_ip_address_on_a_mac.html
ifconfig | grep "inet " | grep -v 127.0.0.1 | cut -d " " -f2
그런 다음 나중에 사용할 수 있도록 짧은 'myip'명령으로 별칭을 지정할 수 있습니다.
echo "alias myip=\"ifconfig | grep 'inet ' | grep -v 127.0.0.1 | cut -d ' ' -f2\"" >> ~/.bash_profile
터미널의 Ubuntu 14.04에서
ifconfig | grep HW
이건 어때:
ifconfig eth0 | grep -Eo ..\(\:..\){5}
또는 더 구체적으로
ifconfig eth0 | grep -Eo [:0-9A-F:]{2}\(\:[:0-9A-F:]{2}\){5}
그리고 또한 간단한 것
ifconfig eth0 | head -n1 | tr -s ' ' | cut -d' ' -f5`
참고 : OS X에서는 eth0이 작동하지 않을 수 있습니다. p2p0 사용 :
ifconfig p2p0 | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}'
이것은 Mac OS X에서 나를 위해 작동합니다.
ifconfig en0 | grep -Eo ..\(\:..\){5}
그렇습니다 :
ifconfig en0 | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}'
둘 다 위의 예의 변형입니다.
멋지고 빠른 것 :
ifconfig eth0 | grep HWaddr | cut -d ' ' -f 11
ifconfig | grep -i hwaddr | cut -d ' ' -f11
활성 어댑터의 MAC 주소를 가져와야했기 때문에이 명령을 사용하게되었습니다.
ifconfig -a | awk '/^[a-z]/ { iface=$1; mac=$NF; next } /inet addr:/ { print mac }' | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}'
도움이 되었기를 바랍니다.
ifconfig en0 | grep ether-유선 MAC 주소 용
ifconfig en1 | grep ether-무선 MAC 주소 용
이것은 나를 위해 일했다
ifconfig eth0 | grep -o -E ..:..:..:..:..:..
대신 eth0
필요한 인터페이스를 작성할 수 있습니다.
ifconfig의 출력 :
$ifconfig
eth0 Link encap:Ethernet HWaddr 00:1b:fc:72:84:12
inet addr:172.16.1.13 Bcast:172.16.1.255 Mask:255.255.255.0
inet6 addr: fe80::21b:fcff:fe72:8412/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:638661 errors:0 dropped:20 overruns:0 frame:0
TX packets:93858 errors:0 dropped:0 overruns:0 carrier:2
collisions:0 txqueuelen:1000
RX bytes:101655955 (101.6 MB) TX bytes:42802760 (42.8 MB)
Memory:dffc0000-e0000000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:3796 errors:0 dropped:0 overruns:0 frame:0
TX packets:3796 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:517624 (517.6 KB) TX bytes:517624 (517.6 KB)
MAC 주소를 추출하는 가장 좋은 방법은 다음과 같습니다.
ifconfig | sed '1,1!d' | sed 's/.*HWaddr //' | sed 's/\ .*//' | sed -e 's/:/-/g' > mac_address
사용하다:
ifconfig eth0 | grep HWaddr
또는
ifconfig eth0 |grep HWaddr
This will pull just the MAC address and nothing else.
You can change your MAC address to whatever you want:
ifconfig eth0 down,
ifconfig eth0 hw ether (new MAC address),
ifconfig eth0 up
참고URL : https://stackoverflow.com/questions/245916/best-way-to-extract-mac-address-from-ifconfigs-output
'program tip' 카테고리의 다른 글
Bash에서 테이블 열을 정렬하는 방법은 무엇입니까? (0) | 2020.11.29 |
---|---|
android.content.res.Resources $ NotFoundException : 메인의 문자열 리소스 ID 치명적인 예외 (0) | 2020.11.29 |
Environment.TickCount 대 DateTime.Now (0) | 2020.11.29 |
UINavigationBar iOS 7 아래에보기가 숨겨 짐 (0) | 2020.11.29 |
C 전처리 기가 열거 형 값을 같은 것으로 간주하는 이유는 무엇입니까? (0) | 2020.11.29 |