Wi-Fi 인터페이스 장치 이름 가져 오기


답변:


15

리눅스에서는 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.

나는이 대답을 좋아한다, 그것은 문제를 해결하지만, 긁지 않는 것에 관한 약간은 나에게 관심이 있고 더 좋은 방법이 있다고 생각하게한다. 나는 이것을 지금 열어두고 싶습니다.
Matt Copperwaite 2016 년

9

우분투 /proc/net/wireless에는 Wi-Fi 인터페이스에 대한 세부 정보가 들어 있는 파일이 있습니다. 나를 위해 어떤 출력 :

$ 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/netA를 wireless(자세한 단지 무선 장치보다 수) 디렉토리와 호환 802.11이다 번째 발견 장치

커널 4.4에서 테스트


7

Josh의 답변을 바탕으로 쉘 글롭을 사용하여 /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/
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.