次のコマンドを使用して、すべてのWi-Fiネットワークの信号強度を取得できます。
$ nmcli -t -f SIGNAL device wifi list
$ 77
67
60
59
55
45
44
39
39
37
このリストを現在接続されているWi-Fiにのみ減らしたいです。マニュアルページを見ましたが、必要なフラグが見つかりませんでした。
sed
1つの解決策はまたはを使用することですが、awk
パイプは使用しないようにします。
nmcli device wifi
列を直接解析する代わりにSIGNALを使用する必要がありますか?
答え1
nmcli --version
nmcli tool, version 1.6.2
リンクされたAPからシグナルを受信するには、次を使用します。
nmcli dev wifi list | awk '/\*/{if (NR!=1) {print $7}}'
の2番目の*
タグは、nmcli dev wifi list
関連付けられたSSIDを識別します。
nmcli --version
nmcli tool, version 1.22.10
使用:
nmcli dev wifi list | awk '/\*/{if (NR!=1) {print $6}}'
答え2
ここでの秘密は、-f
パラメータを使用してnmcli
スクリプトで必須フィールドを指定することです。 SSIDが重要な場合はこの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
このようにフィールドをソートすることは、選択信号が行の先頭から固定数の列区切り文字であることです。これで、列計算やnmcliバージョン管理の問題なしにGAD3Rの答えを使用できるようになりました。
$ nmcli -f IN-USE,SIGNAL,SSID device wifi | awk '/^\*/{if (NR!=1) {print $2}}'
73
答え3
接続されているネットワークの名前がわかっている場合は、次のように方法を変更できます。 (nmcli 1.14.6の場合、他のバージョンは異なる場合があります)
nmcli -t -f SSID,SIGNAL dev wifi list | grep "^<network name>:" | cut -d : -f 2
答え4
どのルータを使用しているかを確認する簡単な方法:
nmcli -f IN-USE,SIGNAL device wifi | grep '*'