Networkmanager(nmcli) 루트 권한 없이 Wi-Fi 신호 강도를 얻으려면 어떻게 해야 합니까?

Networkmanager(nmcli) 루트 권한 없이 Wi-Fi 신호 강도를 얻으려면 어떻게 해야 합니까?

내 시스템에서 연결된 Wi-Fi 신호의 품질을 확인하려면 Wi-Fi에 연결하는 데 사용하는 장치 인터페이스의 이름이 sudo iwconfig wlp6s0어디에 있는지 실행해야 합니다 . wlp6s0run 명령을 사용하지 않으면 출력에 링크 품질이나 신호 레벨이 표시되지 않습니다 sudo. 그러나 예를 들어 Wi-Fi를 nmcli사용하지 않고도 Wi-Fi 의 신호 강도를 얻을 수 있습니다.sudonmcli dev wifi

을 실행할 때 출력에 다음 줄에 표시된 것처럼 시스템 호출을 sudo strace iwconfig wlp6s0사용하는 것으로 나타났습니다 .ioctlstrace

ioctl(3, SIOCGIWSTATS, 0x7ffd1bd7e960) = 0

strace nmcli dev wifi그러나 Wi-Fi 신호 강도나 관련 정보를 얻는 데 동일한 시스템 호출이 사용되지 않는 것으로 나타났습니다 .

nmcli을 사용하지 않고 Wi-Fi 신호 강도를 표시하는 데 필요한 정보를 얻는 방법을 알고 싶습니다 sudo.

편집: strace두 가지 모두에 대한 출력:

  1. 전체 출력 strace nmcli dev wifi:https://pastebin.com/NdqBfC8W

  2. 전체 출력 sudo strace iwconfig wlp6s0:https://pastebin.com/5w0Grwze

답변1

D-Bus를 사용하여 네트워크 관리자 서비스에 접속할 수 있으며 네트워크 관리자 서비스는 루트로 실행 중입니다.

~ ps -o pid,user,cmd -C NetworkManager
  PID USER     CMD
  894 root     /usr/sbin/NetworkManager --no-daemon

답변2

그래요아니요/sbin/iw wlan0 station dump루트 없이 신호 강도를 표시하려면 네트워크 관리자를 실행하세요 .

을 실행하면 straceNETLINK 소켓이 생성되고 해당 소켓에서 데이터를 가져오는 것으로 나타납니다. 자세한 내용은 소스를 읽어봐야 할 것 같습니다 iw.

관련 정보