現在接続されている 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を出力します。