Ottieni i nomi dei dispositivi dell'interfaccia Wi-Fi


Risposte:


15

Su Linux hai iw(mostra / manipola i dispositivi wireless e la loro configurazione) e quando usato con il devcomando:

Commands:
    dev
        List all network interfaces for wireless hardware.

questo è

iw dev

otterrai qualcosa del tipo:

phy#0
    Interface wlan0
        ifindex 3
        wdev 0x1
        addr 00:12:32:e4:18:24
        type managed
phy#1
    Interface wlan1
        ifindex 4
        wdev 0x2
        addr 00:12:22:c6:b2:0a
        type managed

Se si desidera estrarre solo i nomi delle interfacce, è sempre possibile elaborare l'output, ad es

iw dev | awk '$1=="Interface"{print $2}'

tieni presente che la pagina di aiuto indica chiaramente:

Do NOT screenscrape this tool, we don't consider its output stable.

Mi piace questa risposta, risolve il problema, ma la parte del non raschiare mi preoccupa e mi fa pensare che potrebbe esserci un modo migliore. Vorrei lasciarlo aperto per ora.
Matt Copperwaite,

9

Almeno su Ubuntu è presente il /proc/net/wirelessfile che contiene dettagli sulle interfacce Wi-Fi. Quali risultati per me:

$ cat /proc/net/wireless
Inter-| sta-|   Quality        |   Discarded packets               | Missed | WE
 face | tus | link level noise |  nwid  crypt   frag  retry   misc | beacon | 22
wlp5s0: 0000   36.  -74.  -256        0      0      0     16  33004        0

È un po 'disordinato ma il nome del dispositivo è lì.

Per ottenere solo il nome dell'interfaccia:

cat /proc/net/wireless | perl -ne '/(\w+):/ && print $1'

Il perlcodice stampa la stringa di caratteri di parole che precedono i due punti.


Questo non ha funzionato per me, probabilmente perché la mia scheda wireless è disabilitata (ma rilevabile).
imbuedHope

9

Se hai sysfs montato su / sys, funzionano i seguenti comandi:

# find /sys/class/net -follow -maxdepth 2 -name wireless | cut -d / -f 5
wlan0
# find /sys/class/net -follow -maxdepth 2 -name phy80211 | cut -d / -f 5
wlan0

Oppure, senza find:

for dev in `ls /sys/class/net`; do
  if [ -d "/sys/class/net/$dev/wireless" ]; then echo $dev; fi;
done

Il primo trova tutti i dispositivi /sys/class/netcon una wirelessdirectory (che potrebbe essere più di un semplice dispositivo WiFi) e il secondo trova dispositivi compatibili con 802.11

Testato sul kernel 4.4


7

Basandomi sulla risposta di Josh , userò una shell glob per identificare le /sys/class/netdirectory con una wirelessdirectory all'interno e awkper prendere il nome del dispositivo:

# 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 | awk -F'/' '{ print $5 }'
wlp4s0

1

Modo universale (non root) testato su Android 4, Android 7.1 e Android 9 e ArchLinux.

ls /sys/class/ieee80211/*/device/net/
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.