Лучший способ извлечь MAC-адрес из вывода ifconfig?

61
задан Peter Mortensen 22 November 2014 в 16:32
поделиться

3 ответа

Не уверенный, существует ли действительно какие-либо преимущества, но можно просто использовать awk:

ifconfig eth0 | awk '/HWaddr/ {print $5}'
11
ответ дан albertb 24 November 2019 в 16:58
поделиться

Мне нравится использовать/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:

$ ip link show eth0 | awk '/ether/ {print $2}'
00:0c:29:30:21:48

, Если Вы хотите приложить немного больше усилий к и проанализировать больше данных, я рекомендую использовать - аргумент онлайн IP команде, которая позволит Вам рассматривать каждую строку как новое устройство:

$ 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
23
ответ дан Jerub 24 November 2019 в 16:58
поделиться

Я использовал бы:

ifconfig eth0 | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}'

-o заставит grep только печатать часть строки, которая соответствует выражению. [[:xdigit:]]{1,2} будет соответствовать 1 или 2 шестнадцатеричным цифрам (Солярис не производит начальные нули).

69
ответ дан Robert Gamble 24 November 2019 в 16:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: