Existe uma maneira portátil de obter o nome da placa WiFi na linha de comando sem análise adicional?

2

Em esta ferramenta , o nome da interface sem fio é codificado para ser wlan0 . Esta foi uma suposição razoável através do Ubuntu 14.04, mas o nome da interface sem fio parece ter mudado no Ubuntu 15.10.

Eu gostaria de modificar a ferramenta para detectar o nome da primeira interface sem fio em tempo de execução.

Uma maneira de fazer isso é analisar o nome fora da saída de iwconfig .

iwconfig 2>&1 | grep ESSID | awk '{print $1}' | head -n 1

Infelizmente, essa abordagem parece bastante frágil, porque depende da formatação de saída de iwconfig .

Existe um comando portátil e mais direto para obter os nomes das interfaces sem fio na linha de comando?

    
por merlin2011 23.04.2016 / 06:39

1 resposta

0

No Linux, os dispositivos de rede estão listados em /sys/class/net/ . Cada dispositivo tem uma entrada lá e seu tipo é dado por /sys/class/net/$finame/type . Os tipos são definidos em if_arp.h :

#define ARPHRD_IEEE80211 801            /* IEEE 802.11

Você deve encontrar todos os dispositivos de um determinado tipo com:

find_by_type() {
(
    cd /sys/class/net/ || return 1
    for dev in * ; do
        if test "$(cat "$dev/type")" = "$1" ; then
            echo $dev
        fi
    done
)
}

Você pode então:

wlan="$(find_by_type 801 | head -n1)"

Isso só funciona para o Linux, no entanto.

    
por 23.04.2016 / 20:42