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


8

我想在bash脚本中获取当前连接的wifi网络ssid。我正在尝试编写一个备份脚本,如果该脚本连接到我的家庭wifi网络,该脚本将对NAS服务器执行备份。我已经查看了该ip route命令,但它仅返回一些基本信息- 在此处输入图片说明

Answers:


4

假设您使用1个无线设备连接,则以下内容应提供所需的内容:

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

返回所有连接的网络。我只能找到连接的网络吗?
2013年

尝试这样,让我知道:nmcli -t -f active,ssid dev wifi | cut -d \'
Luis Alvarado

仍然返回许多结果
Chan

您可以粘贴您看到的输出内容吗?
Luis Alvarado

1
这对我的作品:nmcli -t -f active,ssid dev wifi | grep '^yes' | cut -d: -f2
Jacob Evan Shreve


2

此命令返回所连接的无线适配器的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

1

怎么样iwconfig wlan0 | sed -e '/ESSID/!d' -e 's/.*ESSID:"/"/'


0
nmcli -t -f NAME connection show --active
  • -t 使输出“简洁”,因此没有标题
  • -f NAME 仅显示ssid
  • --active 仅显示活动的连接

这将显示连接的名称而不是SSID。NAME通常对应于SSID,但并不总是正确的。NetworkManager连接的名称可以更改为任何随机值。
j123b567


0

使用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 我们要过滤活动连接,但不过滤文本为“ yes”的SSID,因此这是 ^
  • cut ... -f2- 在第一个分隔符之后打印行的其余部分,以便我们可以在其中包含带分隔符的SSID
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.