추가 구문 분석 없이 명령줄에서 WiFi 카드 이름을 가져오는 이식 가능한 방법이 있습니까?

추가 구문 분석 없이 명령줄에서 WiFi 카드 이름을 가져오는 이식 가능한 방법이 있습니까?

존재하다이 도구, 무선 인터페이스의 이름은 하드코드되어 있습니다 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에서만 작동합니다.

관련 정보