Как узнать MAC-адрес активной сетевой карты в операционной системе AstraLinux?

На компьютере с операционной системой AstraLinux 1.7.6, где установлены три сетевых карты, как можно определить MAC-адрес только активной сетевой карты (той, к которой подключен кабель)? Команда <b>macAdr=`ip a | grep ether | gawk '{print $2}'`</b> выводит все три MAC-адреса. Как можно изменить команду, чтобы получить только MAC-адрес активного интерфейса?
  • 27 декабря 2024 г. 6:23
Ответы на вопрос 4
Для определения MAC-адреса только активной сетевой карты в AstraLinux, вы можете воспользоваться командой `ip` с фильтрацией по состоянию интерфейса. Используйте следующую команду:

```bash
ip link show | awk '/state UP/ {getline; print $2}' | sed 's/://'
```

Эта команда делает следующее:

1. `ip link show` - показывает список всех сетевых интерфейсов.
2. `awk '/state UP/ {getline; print $2}'` - находит строку, где состояние интерфейса `UP` (т.е. активного), затем переходит к следующей строке, где находится MAC-адрес, и извлекает его второй столбец (MAC-адрес).
3. `sed 's/://'` - удаляет двоеточия из MAC-адреса.

Если вы хотите получить сам MAC-адрес в переменной, вы можете модифицировать команду следующим образом:

```bash
macAdr=$(ip link show | awk '/state UP/ {getline; print $2}' | sed 's/://')
```

Теперь переменная `macAdr` будет содержать только MAC-адрес активного интерфейса.
ip a | grep -A 1 'state UP' | grep ether | gawk '{print $2}'
ip link show up|grep ether|awk '{print $2}'
ip --json link | jq -r '.[]|select(.operstate=="UP").address'
Похожие вопросы