Linux
使用 nmcli 獲取連接的 Wi-Fi 網路信號強度
我可以使用以下命令獲取所有 Wi-Fi 網路的信號強度:
$ nmcli -t -f SIGNAL device wifi list $ 77 67 60 59 55 45 44 39 39 37
我想僅將此列表縮減為我連接的目前 Wi-Fi。我已經瀏覽了手冊頁,但找不到必要的標誌。
一種解決方案是使用
sed
orawk
,但我想避免管道。我應該使用
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