Страницы

Поиск по вопросам

среда, 12 февраля 2020 г.

Поиск в переменной bash

#bash


Надо узнать MAC-адрес (eth0, например). ifconfig выдаёт помимо mac'а кучу ненужного
мне мусора. Думал вычленить вывод регуляркой, но не знаю как. То что находил проверяло
строку на соответствие регулярке, но не производило поиск/сохранение в массив.
    


Ответы

Ответ 1



хотя программа ifconfig морально и физически устарела для целей управления, диагностики и получения информации в операционных системах, использующих программу linux в качестве ядра, приведу пример и для неё: $ x=$(/sbin/ifconfig имя-интерфейса); x=${x#*HWaddr }; x=${x%% *}; echo $x 11:22:33:44:55:66 или, не «на чистом bash»: $ /sbin/ifconfig имя-интерфейса | awk '/HWaddr/ {print $5}') 11:22:33:44:55:66 а с использованием актуальной программы ip из пакета программ iproute2 — например, так: $ x=$(ip -o l sh имя интерфейса); x=${x#*ether }; x=${x%% *}; echo $x 11:22:33:44:55:66 или, если смонтирована виртуальная файловая система sysfs, то ещё короче: $ cat /sys/class/net/имя-интерфейса/address 11:22:33:44:55:66 подробнее про shell parameter expansion в программе bash — см. документацию.

Комментариев нет:

Отправить комментарий