Как получить имя интерфейса, который отвечает за беспроводную сеть, из вывода ifconfig/ip?

Как извлечь только имя интерфейса, отвечающего за беспроводную сеть, из вывода команды ifconfig/ip?
  • 16 апреля 2024 г. 20:09
Ответы на вопрос 4
Чтобы получить имя интерфейса, отвечающего за беспроводную сеть, из вывода команды ifconfig или ip, нужно искать строку, содержащую информацию о беспроводной сети. 

Для вывода информации о сетевых интерфейсах с помощью команды ifconfig, можно использовать следующую команду:

```bash
ifconfig
```

Для вывода информации о сетевых интерфейсах с помощью команды ip, можно использовать следующую команду:

```bash
ip a
```

Затем, просмотрите вывод команды и найдите строку, содержащую информацию о беспроводной сети. Обычно, это будет строка с упоминанием "wlan" или "wifi".

Например, если в выводе команды вы увидите строку такого вида:

```
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
```

То имя интерфейса беспроводной сети будет "wlan0".

Если нужно извлечь только имя интерфейса, можно воспользоваться командой grep для фильтрации вывода. Например, для извлечения только имени интерфейса беспроводной сети из вывода команды ifconfig, можно использовать следующую команду:

```bash
ifconfig | grep -o '^[a-zA-Z0-9]*'
```

Для ip команды:

```bash
ip a | grep -o '^[0-9]*: [a-zA-Z0-9]*'
``` 

Эта команда найдет первое слово в каждой строке вывода, соответствующее имени интерфейса.
ip --json addr show | jq --raw-output .[].ifname
зачем так сложно? читаешь /proc/net/wireless и получаешь начиная с третьей строки список wireless интерфейсов, типа так: 
Inter-| sta-|   Quality        |   Discarded packets               | Missed | WE
 face | tus | link level noise |  nwid  crypt   frag  retry   misc | beacon | 22
wlan0: 0000   70.  -50   -256        0      0      0      0    325        0
Это должны быть те /sys/class/net/*, у которых существует /sys/class/net/$iface/wireless
Похожие вопросы