我想在 bash 腳本中取得目前連線的 wifi 網路 ssid。我正在嘗試編寫備份腳本,如果 NAS 伺服器連接到我的家庭 WiFi 網絡,該腳本將執行備份到該伺服器。我查看了該ip route
命令,但它只返回一些基本資訊 -
答案1
iwgetid -r
或者
iwgetid wlan0 -r
答案2
假設您使用 1 個無線設備進行連接,以下內容應提供您正在尋找的內容:
nmcli -t -f ssid dev wifi| cut -d\' -f2
答案3
此命令傳回所連接的無線適配器的 SSID(假設您只有一個)。
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 ...
導致在表單中列印處於活動狀態的 ssidyes:myssid
no:otherssid
grep ^yes
我們想要過濾活動連接,但不過濾帶有文字“yes”的 SSID,因此這就是^
cut ... -f2-
列印第一個分隔符號之後的剩餘行,這樣我們就可以得到帶有分隔符號的 SSID