web-dev-qa-db-ja.com

接続されたWiFiネットワークSSIDを取得する方法は?

Bashスクリプトで現在接続されているwifiネットワークssidを取得したい。バックアップスクリプトを記述しようとしています。このスクリプトは、自宅のWi-Fiネットワークに接続されている場合、NASサーバーにバックアップを実行します。 ip routeコマンドを調べましたが、基本的な情報のみが返されます- enter image description here

8
Chan

以下は、1つのワイヤレスデバイスを使用して接続していると仮定した場合に、探しているものを提供します。

nmcli -t -f ssid dev wifi| cut -d\' -f2
4
Luis Alvarado
iwgetid -r

または

iwgetid wlan0 -r
14
nmset

このコマンドは、接続されているワイヤレスアダプターのSSIDを返します(1つしかない場合)。

iwconfig | grep ESSID | sed -e 's/.*ESSID:"\(.*\)".*/\1/'

また、端末では警告が表示されますが、stderrでは重要ではありません。

remi@Host~$id:~$ id=$(iwconfig | grep ESSID | sed -e 's/.*ESSID:"\(.*\)".*/\1/')
eth0      no wireless extensions.
lo        no wireless extensions.
virbr0    no wireless extensions.
tap0      no wireless extensions.

remi@Host:~$ echo $id
CISPI
2
Rémi

どのように「iwconfig wlan0 | sed -e '/ESSID/!d' -e 's/.*ESSID:"/"/'?」

1
jdthood

私はこれを試しました:

    iwconfig wlan0 | grep ESSID | cut -d\" -f2
0
John Goofy
nmcli -t -f NAME connection show --active
  • -t出力を「簡潔」にして、ヘッダーを作成しない
  • -f NAME ssidのみを表示します
  • --activeアクティブな接続のみを表示します
0
John Mehorter

NetworkManager-1.8.4では、これにより正しい結果が生成されました。

LANG=C nmcli -t -f active,ssid dev wifi | grep ^yes | cut -d: -f2-

コマンドのすべての部分には理由があります

  • LANG=Cは、ローカライズされた文字列でgrepを使用しているため、英語を強制するためです
  • nmcli ... -f active,ssid ...は、yes:myssidno:otherssidの形式でアクティブステータスのssidを出力します
  • grep ^yesアクティブな接続をフィルタリングしますが、テキスト「yes」のSSIDはフィルタリングしないため、^の理由です
  • cut ... -f2-は、最初のセパレーターの後の行の残りを出力します。そのため、SSIDにセパレーターを含めることができます
0
j123b567