वाई-फाई इंटरफ़ेस डिवाइस नाम प्राप्त करें


20

नेटवर्क डिवाइस नाम खोजने के बारे में पिछले प्रश्न के समान , मैं डिवाइस नामों की एक (विश्वसनीय) सूची प्राप्त करना चाहता हूं, लेकिन सिर्फ वाई-फाई उपकरणों के लिए। ताकि यह आपके नामकरण संरचना के आधार पर निम्नलिखित जैसा लगे:

wlan0
wlan1

या

wlp5s0
wlp5s1

जवाबों:


16

आपके पास लिनक्स पर iw(वायरलेस उपकरणों और उनके कॉन्फ़िगरेशन को दिखाएं / हेरफेर करें) और जब devकमांड के साथ उपयोग किया जाता है :

Commands:
    dev
        List all network interfaces for wireless hardware.

अर्थात्

iw dev

आपको कुछ ऐसा मिलेगा:

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

यदि आप केवल इंटरफेस नामों को निकालना चाहते हैं तो आप हमेशा आउटपुट की प्रक्रिया कर सकते हैं

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

बस सहायता पृष्ठ को स्पष्ट रूप से ध्यान में रखें:

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

मुझे यह उत्तर पसंद है, यह समस्या को हल करता है, लेकिन मुझे चिंता न करने के बारे में थोड़ा और मुझे लगता है कि एक बेहतर तरीका हो सकता है। मैं अभी के लिए इसे खुला छोड़ना चाहूंगा।
मैट कॉपरवाइट

9

कम से कम उबंटू पर, ऐसी /proc/net/wirelessफाइल है जिसमें वाई-फाई इंटरफेस के बारे में विवरण है। जो मेरे लिए आउटपुट:

$ 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

यह थोड़ा गड़बड़ है लेकिन डिवाइस का नाम इसमें है।

सिर्फ इंटरफ़ेस नाम पाने के लिए:

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

perlकोड पेट के पूर्ववर्ती शब्द वर्णों की स्ट्रिंग प्रिंट करता है।


यह मेरे लिए काम नहीं करता था - ठीक है क्योंकि मेरे पास मेरा वायरलेस कार्ड अक्षम है (लेकिन पता लगाने योग्य)।
imbuedHope

9

यदि आपके पास sysfs / sys पर आरोहित है तो निम्नलिखित कमांड काम करते हैं:

# 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

या, बिना find:

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

पहला /sys/class/netएक wirelessनिर्देशिका के साथ सभी उपकरणों को पाता है (जो कि केवल वाईफाई डिवाइस से अधिक हो सकता है) और दूसरा उन उपकरणों को ढूंढता है जो 802.11 संगत हैं

कर्नेल पर परीक्षण किया गया 4.4


7

जोश के जवाब पर बिल्डिंग , मैं एक /sys/class/netनिर्देशिका के साथ निर्देशिकाओं की पहचान करने के लिए wireless, और awkडिवाइस का नाम हथियाने के लिए एक शेल ग्लोब का उपयोग करूंगा :

# 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

यूनिवर्सल तरीका (नॉन रूट) Android 4, Android 7.1 और Android 9 और ArchLinux पर परीक्षण किया गया।

ls /sys/class/ieee80211/*/device/net/
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.