如何取得已連線的wifi網路ssid?

如何取得已連線的wifi網路ssid?

我想在 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

相關內容