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

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

비슷하다네트워크 장치 이름 찾기에 대한 이전 질문, (신뢰할 수 있는) 장치 이름 목록을 가져오고 싶지만 Wi-Fi 장치에만 해당됩니다. 명명 구조에 따라 다음과 같습니다.

wlan0
wlan1

또는

wlp5s0
wlp5s1

답변1

nmcli다음과 같은 모든 장치와 유형을 나열할 수 있습니다 .

nmcli --get-values ​​GENERAL.DEVICE,GENERAL.TYPE 장치 표시
eno1
ethernet

wlp1s0
wifi

wlp1s1
wifi

p2p-dev-wlp1s0
wifi-p2p

lo
loopback

-g, --get-values설명서 에 따르면 사용시"간결하게 출력됩니다. 이 모드는 컴퓨터(스크립트) 처리를 위해 설계되었습니다.". 따라서 해당 출력을 다른 도구로 파이프하고 다음과 같은 Wi-Fi 장치 이름을 얻을 수 있습니다.

nmcli ... | sed '/^wifi/!{h;d;};x'

또는

nmcli ... | awk '/^wifi/{print dev; next};{dev=$0};'

Linux에서는 다음 명령과 함께 사용하여 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.

답변2

적어도 Ubuntu에는 /proc/net/wirelessWi-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코드는 콜론 앞에 오는 단어 문자열을 인쇄합니다.

답변3

범용 방식(루트가 아닌)은 Android 4, Android 7.1, Android 9 및 ArchLinux에서 테스트되었습니다.

ls /sys/class/ieee80211/*/device/net/

답변4

확립된조쉬의 대답, 쉘 glob을 사용하여 내부 디렉터리 /sys/class/net가 포함된 디렉터리를 식별 하고 장치 이름을 가져옵니다.wirelesscut

# 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 | cut -d/ -f5
wlp4s0

관련 정보