一意のSSIDごとに1つのエントリを表示するように "nmcli dev wifi"を制限します。

一意のSSIDごとに1つのエントリを表示するように "nmcli dev wifi"を制限します。

NetworkManagerのグラフィカルインターフェイス(トレイアイコンを介して)を使用すると、約10個のSSID(現在の場所について)が表示されます。ただし、使用するとnmcli dev wifi約55項目が返されます。その理由は、同じSSIDが異なる信号強度(時には転送速度も異なる)に複数回戻ってくるからです。ほとんどの冗長SSIDは異なるチャネル/帯域を持っていますが、一部は同じチャネル/帯域を持っています。

サンプル出力

IN-USE  SSID               MODE   CHAN  RATE        SIGNAL  BARS  SECURITY    
        G4_9647            Infra  11    65 Mbit/s   84      ▂▄▆█  WPA2        
        Telekom            Infra  11    130 Mbit/s  64      ▂▄▆_  --          
        Airport-Frankfurt  Infra  11    130 Mbit/s  62      ▂▄▆_  --          
        FRAWiSe            Infra  11    130 Mbit/s  60      ▂▄▆_  WPA2 802.1X 
        FRAWiSe            Infra  48    405 Mbit/s  60      ▂▄▆_  WPA2 802.1X 
        Airport-Frankfurt  Infra  48    405 Mbit/s  60      ▂▄▆_  --          
        Ca81pVb5jKTw       Infra  11    130 Mbit/s  59      ▂▄▆_  WPA2        
        Telekom            Infra  48    405 Mbit/s  59      ▂▄▆_  --          
        Airport-Frankfurt  Infra  36    270 Mbit/s  57      ▂▄▆_  --          
        Telekom            Infra  36    270 Mbit/s  55      ▂▄__  --          
        FRAWiSe            Infra  36    270 Mbit/s  55      ▂▄__  WPA2 802.1X 
        Ca81pVb5jKTw       Infra  11    130 Mbit/s  54      ▂▄__  WPA2        
        AndroidAP 3        Infra  6     65 Mbit/s   50      ▂▄__  WPA2        
        FRAWiSe            Infra  11    130 Mbit/s  50      ▂▄__  WPA2 802.1X 

次のコマンドは、約55の接続もリストします。

sudo iwlist wlp4s0 scan | grep ESSID
sudo iw dev wlp4s0 scan | grep SSID

NetworkManager GUIを使用してnmcli同じ結果を取得し、結果を一意のSSIDごとに1つの項目に制限するにはどうすればよいですか? SSIDがどのチャンネル/バンドにあるかを知らずにこれを達成したいです(この場合はgrepを使用できます)。たとえば、信号強度が最も高いチャンネル/帯域のエントリのみが返されます。

答え1

nmcli dev wifi | awk -F'  +' '{ if (!seen[$2]++) print}'

awkスクリプトは次のように動作します。

  • -F '+' - 区切り文字は2つ以上のスペースです。
  • 以前に表示されていない場合は、2番目の列(SSID)を印刷します。その後、値に1を追加すると、次に再印刷されません。

関連情報