Grégoire Borel Asked: 2018-11-23 01:36:24 +0800 CST2018-11-23 01:36:24 +0800 CST 2018-11-23 01:36:24 +0800 CST 使用 nmcli 获取连接的 Wi-Fi 网络信号强度 772 我可以使用以下命令获取所有 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 列吗? linux nmcli 4 个回答 Voted Best Answer GAD3R 2018-11-23T02:25:32+08:002018-11-23T02:25:32+08:00 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}}' apnorton 2020-12-06T14:47:14+08:002020-12-06T14:47:14+08:00 这里的技巧是使用-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 telcoM 2018-11-23T02:06:01+08:002018-11-23T02:06:01+08:00 如果您知道您连接的网络的名称,您可以像这样修改您的方法:(对于 nmcli 1.14.6,其他版本可能会有所不同) nmcli -t -f SSID,SIGNAL dev wifi list | grep "^<network name>:" | cut -d : -f 2 Pasi 2021-12-30T10:12:47+08:002021-12-30T10:12:47+08:00 查看正在使用的路由器的简单方法: nmcli -f IN-USE,SIGNAL device wifi | grep '*'
要获取您连接的 AP 的信号,请使用:
第二个
*
标记nmcli dev wifi list
设置为标识您连接的 SSID。利用:
这里的技巧是使用
-f
参数nmcli
来指定你想要在你的脚本中的哪些字段。如果您关心 SSID,请使用该SSID
字段;如果您关心连接到哪一个,请使用以下IN-USE
字段:以这种方式对字段进行排序的优点是选择信号是从行首开始固定数量的列分隔符;我们现在可以使用 GAD3R 的答案,而不会遇到列数或 nmcli 版本控制问题:
如果您知道您连接的网络的名称,您可以像这样修改您的方法:(对于 nmcli 1.14.6,其他版本可能会有所不同)
查看正在使用的路由器的简单方法: