为什么我连个 Wi-Fi 都会使用终端来完成?

前段时间使用 SmartConfig 给网关进行一键配网,需要频繁修改 Wi-Fi 密码进行测试。于是在我修改密码后,再用 macOS 的图形界面连同一个 Wi-Fi 的时候,却提示如下图所示,而不是提示密码错误。

我用的 macOS 版本为 Mojave 10.14.6,这或许是 macOS 的一个 bug。

我也找到了两种解决方法:

  • 在钥匙串中删除该 Wi-Fi SSID 存储的密码。
  • 在终端使用 networksetup 命令连接 Wi-Fi(推荐)

方法一,使用 networksetup 命令连接 Wi-Fi(推荐)

从Snow Leopard(Mac OS X v10.6.x)或更早版本开始,您可以执行以下操作:

1
networksetup -setairportnetwork $INTERFACE $SSID $PASSWORD
  • $INTERFACE 是您的AirPort卡的“ enX”样式标识符(通常是en1,但en0在MacBook Air和en2Mac Pro中使用,并且由于其他原因也会有所不同)

    那么如何确定你的电脑使用 en0 还是 en1 还是 en2 呢?

    有两种方法:

    • 你一个个试,如果是 INTERFACE 错误,会提示 enX is not a Wi-Fi interface.
    • 先通过图形界面连接 Wi-Fi,然后使用 ifconfig 命令查找 Wi-Fi interface。
  • $SSID 是您的网络名称,例如"Simon's SSID"。如果包含空格,请用引号引起来。

  • $PASSWORD 是您的WEP,WPA-PSK或WPA2-PSK密码。

使用该命令,连接成功没有输出,失败会输出错误信息。

查看 Wi-Fi 信息

如果你想查看当前连接的 Wi-Fi 信息,使用如下命令:

1
/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport -I

如果仅仅想获取连接的 SSID 名称,使用如下命令:

1
/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport -I | grep -w SSID | awk '{print $2}' 

1
/Sy*/L*/Priv*/Apple8*/V*/C*/R*/airport -I | awk '/ SSID:/ {print $2}'

方法二,在钥匙串中删除该 SSID 后再连接

如果你不熟悉命令行,可以使用此方法。

  1. 打开钥匙串,用你 Wi-Fi 对应的 SSID 搜索,找到后删除。

  2. 再通过图形界面连接。

为什么我连个 Wi-Fi 都会使用终端来完成?

https://ganzhixiong.com/p/772ecb8b/

Author

干志雄

Posted on

2021-09-08

Updated on

2021-09-08

Licensed under

Comments