존재하다이 도구, 무선 인터페이스의 이름은 하드코드되어 있습니다 wlan0
. Ubuntu 14.04에서는 이것이 합리적인 가정이지만 Ubuntu 15.10에서는 무선 인터페이스 이름이 변경된 것으로 보입니다.
런타임 시 첫 번째 무선 인터페이스의 이름을 감지하도록 도구를 수정하고 싶습니다.
한 가지 방법은 의 출력에서 이름을 구문 분석하는 것입니다 iwconfig
.
iwconfig 2>&1 | grep ESSID | awk '{print $1}' | head -n 1
불행하게도 이 접근 방식은 iwconfig
.
명령줄에서 무선 인터페이스 이름을 가져오는 이식 가능하고 보다 직접적인 명령이 있습니까?
답변1
Linux에서는 네트워크 장치가 에 나열되어 있습니다 /sys/class/net/
. 유형이 로 지정된 각 장치에 대한 항목이 있습니다 /sys/class/net/$finame/type
. 유형은 다음에 정의되어 있습니다 if_arp.h
.
#define ARPHRD_IEEE80211 801 /* IEEE 802.11
다음을 통해 특정 유형의 모든 장치를 찾을 수 있습니다.
find_by_type() {
(
cd /sys/class/net/ || return 1
for dev in * ; do
if test "$(cat "$dev/type")" = "$1" ; then
echo $dev
fi
done
)
}
그런 다음 다음을 수행할 수 있습니다.
wlan="$(find_by_type 801 | head -n1)"
그러나 이것은 Linux에서만 작동합니다.