Linux

使用 nmcli 獲取連接的 Wi-Fi 網路信號強度

  • February 4, 2022

我可以使用以下命令獲取所有 Wi-Fi 網路的信號強度:

$ nmcli -t -f SIGNAL device wifi list
$ 77
 67
 60
 59
 55
 45
 44
 39
 39
 37

我想僅將此列表縮減為我連接的目前 Wi-Fi。我已經瀏覽了手冊頁,但找不到必要的標誌。

一種解決方案是使用sedor awk,但我想避免管道。

我應該使用nmcli device wifi而不是直接解析 SIGNAL 列嗎?

nmcli --version
nmcli tool, version 1.6.2

要獲取您連接的 AP 的信號,請使用:

nmcli dev wifi list | awk '/\*/{if (NR!=1) {print $7}}'

第二個*標記nmcli dev wifi list設置為標識您連接的 SSID。

nmcli --version
nmcli tool, version 1.22.10

採用:

nmcli dev wifi list | awk '/\*/{if (NR!=1) {print $6}}'

這裡的技巧是使用-f參數nmcli來指定你想要在你的腳本中的哪些欄位。如果您關心 SSID,請使用該SSID欄位;如果您關心連接到哪一個,請使用以下IN-USE欄位:

$ nmcli -f IN-USE,SIGNAL device wifi
*  SIGNAL 
  90
*  73     
  40
$ nmcli -f IN-USE,SIGNAL,SSID device wifi
*  SIGNAL  SSID               
  90      wifiWithoutSpaces
*  73      Some Wifi With Spaces
  40      Wifi With a * in its SSID

以這種方式對欄位進行排序的優點是選擇信號是從行首開始固定數量的列分隔符;我們現在可以使用 GAD3R 的答案,而不會遇到列數或 nmcli 版本控制問題:

$ nmcli -f IN-USE,SIGNAL,SSID device wifi | awk '/^\*/{if (NR!=1) {print $2}}'
73

引用自:https://unix.stackexchange.com/questions/483396