네트워크 장치 이름 찾기에 대한 이전 질문과 유사하게 Wi-Fi 장치에 대해서만 신뢰할 수있는 장치 이름 목록을 얻고 싶습니다. 명명 구조에 따라 다음과 같이 보입니다.
wlan0
wlan1
또는
wlp5s0
wlp5s1
네트워크 장치 이름 찾기에 대한 이전 질문과 유사하게 Wi-Fi 장치에 대해서만 신뢰할 수있는 장치 이름 목록을 얻고 싶습니다. 명명 구조에 따라 다음과 같이 보입니다.
wlan0
wlan1
또는
wlp5s0
wlp5s1
답변:
리눅스에서는 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.
우분투 /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
코드는 콜론 앞에 단어 문자열을 인쇄합니다.
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
A를 wireless
(자세한 단지 무선 장치보다 수) 디렉토리와 호환 802.11이다 번째 발견 장치
커널 4.4에서 테스트
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