Получить имена устройств интерфейса Wi-Fi

Та же проблема при установке VirtualBox 5.1.6 на текущую версию Slackware. VirtualBox 5.1 требует qt5, которому, как оказалось, нужен пакет libxkbcommon (который я не устанавливал). После получения этого пакета из slackbuilds.org VirtualBox запустился нормально.

20
12.05.2017, 13:56
4 ответа

Опираясь на ответ Джоша , я буду использовать глобус оболочки для идентификации каталогов /sys/class/netс каталогом wirelessвнутри и cutдля получения имени устройства:

# find the directories
$ printf '%s\n' /sys/class/net/*/wireless # substitute with phy80211 if desired
/sys/class/net/wlp4s0/wireless
# filter out the "device" part
$ printf '%s\n' /sys/class/net/*/wireless | cut -d/ -f5
wlp4s0
8
27.01.2020, 19:44

Универсальный способ (без полномочий root )протестирован на Android 4, Android 7.1 и Android 9 и ArchLinux.

ls /sys/class/ieee80211/*/device/net/
8
27.01.2020, 19:44

Вот небольшая функция bash, которую я написал, чтобы покрыть больше исключений:

lswifiInterfaces () {
    set -o pipefail # I use this to preserve the return code of the first command in the pipe
    if \ls /sys/class/ieee80211/*/device/net 2> /dev/null; then
        :
    elif \ls -d /sys/class/net/*/wireless 2> /dev/null | awk -F/ '{print$5}'; then
        :
    fi
    set +o pipefail
}
0
12.11.2020, 13:45

Вот простой и очень эффективный цикл, который отвечает на вопрос:

for dev in /sys/class/net/*; do
    [ -e "$dev"/wireless ] && echo ${dev##*/}
done

Этот выбирает первый беспроводной интерфейс и сохраняет его в $iwdev, что мне и было нужно:

for dev in /sys/class/net/*; do
    if [ -e "$dev"/wireless ]; then
        iwdev=${dev##*/};
        break;
    fi
done

Это переписанный ответ Джоша , который я нашел красивым и простым. Приведенный выше подход обрабатывает пробелы и другие странности в именах файлов. Он также не делает слишком много предположений о правильности путей к файлам и полагается на минимум косых черт и индексации. Наконец, он использует встроенный -в параметр расширения для извлечения имени базового устройства вместо порождения подоболочки для cutили awk.

2
27.01.2021, 23:09

Теги

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