Kablosuz arayüz cihaz adlarını alın


Yanıtlar:


16

Linux'ta iw(kablosuz aygıtları ve bunların yapılandırmasını göster / değiştir) ve devkomutla birlikte kullanıldığında :

Commands:
    dev
        List all network interfaces for wireless hardware.

yani

iw dev

şöyle bir şey elde edersiniz:

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

Yalnızca arabirim adlarını ayıklamak istiyorsanız, çıktıyı her zaman işleyebilirsiniz;

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

yardım sayfasının açıkça belirttiğini unutmayın:

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

Bu yanıtı seviyorum, sorunu çözüyor, ama kazıma yapmama ile ilgili biraz beni endişelendiriyor ve daha iyi bir yol olabileceğini düşündürüyor. Şimdilik bunu açık bırakmak istiyorum.
Matt Copperwaite

9

En azından Ubuntu'da /proc/net/wireless, Wi-Fi arayüzleri hakkında ayrıntılar içeren dosya var. Benim için hangi çıktılar:

$ 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

Biraz dağınık ama cihaz adı orada.

Yalnızca arayüz adını almak için:

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

perlKod nokta üst üste önceki kelime karakter dizesini yazdırır.


Bu benim için işe yaramadı - muhtemelen kablosuz kartımı devre dışı bıraktığım için (ancak algılanabilir).
imbuedHope

9

/ Sys dizininde sysfs varsa, aşağıdaki komutlar çalışır:

# 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

Veya find:

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

Birincisi /sys/class/netbir wirelessdizindeki tüm cihazları (sadece WiFi cihazlarından daha fazlası olabilir) bulur ve ikincisi 802.11 uyumlu cihazları bulur

Çekirdek 4.4 üzerinde test edildi


7

Josh'un cevabına dayanarak , içinde /sys/class/netbir wirelessdizin olan dizinleri tanımlamak awkve cihaz adını almak için bir kabuk glob kullanacağım :

# 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

Evrensel yol (root olmayan) Android 4, Android 7.1 ve Android 9 ve ArchLinux'da test edildi.

ls /sys/class/ieee80211/*/device/net/
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.