如何获取连接的wifi网络ssid?

如何获取连接的wifi网络ssid?

我想在 bash 脚本中获取当前连接的 wifi 网络 ssid。我正在尝试编写一个备份脚本,如果 NAS 服务器连接到我的家庭 wifi 网络,该脚本将执行备份到 NAS 服务器。我查看了命令,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

相关内容