接続されている Wi-Fi ネットワークの SSID を取得するにはどうすればよいですか?

接続されている Wi-Fi ネットワークの SSID を取得するにはどうすればよいですか?

現在接続されている Wi-Fi ネットワークの SSID を Bash スクリプトで取得したいです。自宅の Wi-Fi ネットワークに接続されている場合に NAS サーバーにバックアップを実行するバックアップ スクリプトを作成しようとしています。コマンドを調べましたip routeが、基本的な情報しか返されませんでした。 ここに画像の説明を入力してください

答え1

iwgetid -r

または

iwgetid wlan0 -r

答え2

1 台のワイヤレス デバイスを使用して接続している場合、次の情報を取得すれば目的の結果が得られる可能性があります。

nmcli -t -f ssid dev wifi| cut -d\' -f2

答え3

このコマンドは、接続されているワイヤレス アダプターの 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

答え4

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 ...フォームにアクティブステータスのSSIDを印刷します。yes:myssid no:otherssid
  • grep ^yesアクティブな接続をフィルタリングしたいのですが、テキスト「はい」のSSIDはフィルタリングしたくないので、^
  • cut ... -f2-最初の区切り文字の後の行の残りを印刷し、区切り文字を含むSSIDを出力します。

関連情報