Wi-Fi 연결에 대한 정보를 찾을 수 있는 방법이 있나요? 어떤 네트워크에 언제 연결해야 합니까? proc/net에서 이 정보를 찾아보았지만 아무것도 찾지 못했습니다. (좀 더 구체적으로 말하면 내 Android 기기에서 이 정보를 찾고 싶습니다.)
답변1
Linux에서는 연결 기록이 명시적으로 저장되지 않으므로 하드웨어 정보와 네트워크 정보를 구분해야 합니다. 하드웨어 특정 정보의 예는 다음과 같습니다.dmesg
, 특정 하드웨어에 대한 정보를 표시할 수 있습니다.즉, 링크가 열려 있는지 닫혀 있는지는 알 수 있지만 특정 WiFi 액세스 포인트의 이름은 기록되지 않습니다.
설정은 Linux 배포판에서 사용하는 시스템에 따라 달라진다는 점도 주목할 가치가 있습니다. Ubuntu 및 Deepin과 같은 많은 Debian 기반 시스템은 네트워크 관리자를 사용합니다. 따라서 구성된 모든 무선 연결에는 /etc/NetworkManager/system-connections
폴더에 적절한 파일이 있습니다. WiFi 연결에 관해 이야기하는 경우 모든 연결의 모든 파일에는 액세스 포인트의 비밀번호와 BSSID가 포함됩니다. 파일 이름은 ESSID입니다. 동일한 ESSID가 여러 BSSID 액세스 포인트에서 공유될 수 있는 네트워크의 경우(예를 들어 우리 대학은 다른 라우터가 있는 다른 건물에 동일한 WiFi 액세스 포인트 이름이 있음) - 액세스 포인트 이름은 제외됩니다. 데스크탑 애플릿에서도 이 정보를 볼 수 있지만 이 정보를 모두 보려면 루트 액세스 권한이 있어야 합니다. 다른 네트워크 관리 유틸리티에 대해서는 사용해 본 적이 없기 때문에 언급할 수 없습니다.
그러나 최소한 네트워크 관리자가 DBus 프로세스 간 통신 하위 시스템을 통해 연결에 대한 정보를 전송하고 dbus-monitor
유틸리티를 통해 스크립트를 작성할 수 있기 때문에 이러한 로깅을 구현하는 것이 가능합니다.
이러한 유형의 로깅을 구현할 때 고려해야 할 또 다른 사항은 DHCP 임대입니다. 사용된 시스템은 systemd
IP 주소가 임대된 게이트웨이에 대한 정보를 출력에 제공해야 합니다. journalctl
바라보다관련 게시물참고용.
Android에 관해 구체적으로 문의하는 경우 android.stackexchange.com에 문의하는 것이 더 적절할 것입니다. 하지만 Android에도 유사한 로깅 관행이 있는 것으로 의심됩니다. 즉, 기기가 액세스 포인트가 있지만 어느 것뿐입니다. 다시 말하지만, 이러한 유형의 정보에는 특정 위치가 있습니다. ~에 따르면이 게시물:
CyanogenMod 장치 및 기타 AOSP ROM에서는 /data/misc/wifi/wpa_supplicant.conf 파일에서 가져올 수 있습니다.
위에 언급된 파일을 포함하여 Android의 모든 시스템 수준 정보에 액세스하려면 루트가 필요합니다.
답변2
나는 어떤 네트워크에 연결되어 있나요?
이 iw
명령을 사용하면 연결된 네트워크를 얻을 수 있습니다.
iw dev <Interface> link
예를 들어:
iw dev wlan0 link | grep SSID
또는 depriated 명령을 사용하십시오 iwgetid
.
언제?
wpa_supplicant
다음 이벤트를 확인하여 syslog
:
# cat /var/log/syslog | grep wpa_supplicant
e,g : 루트 액세스로 Android에서 termux 터미널 사용:
$ tsu
# logcat | grep -i wpa_supplicant