program tip

ifconfig의 출력에서 ​​MAC 주소를 추출하는 가장 좋은 방법은 무엇입니까?

radiobox 2020. 11. 29. 10:10
반응형

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

반응형