使用 networksetup 连接到 WiFi 网络时,WiFi 符号上会出现一个感叹号。它还显示网络偏好设置中没有 802.1x 身份验证。我尝试了以下命令:
networksetup -setairportnetwork $INTERFACE "$SSID"
我尝试在设置网络之前解锁钥匙串,并尝试将密码添加为最后一个参数。我还尝试在钥匙串中设置密码,以允许所有应用程序无限制地访问它。
我期望网络连接的方式与手动切换网络的方式相同。但是,通过 networksetup 连接后,查看网络偏好设置时,似乎没有身份验证。
在网络偏好设置下,手动切换后,状态为已连接,并显示“Wi-Fi 已连接到 XXXX,IP 地址为 XXXXXXX”。还显示“802.1X:默认”和“通过 EAP-PEAP (MSCHAPv2) 进行身份验证”
但是,使用脚本切换后,状态为“开启”,并显示消息“Wi-Fi 没有 IP 地址,无法连接到互联网。”也没有关于 802.1X 身份验证的消息。
答案1
我最终使用 Bash 脚本中的 Applescript 解决了这个问题。这模仿了用户手动切换 WiFi 网络的方式。
为了防止将来其他人遇到这个问题,这里是我创建的可以帮我解决此问题的 bash 函数。
switchWiFi () {
osascript \
-e'tell application "System Events"' \
-e 'tell process "SystemUIServer"' \
-e 'click (menu bar item 1 of menu bar 1 whose description contains "Wi-Fi")' \
-e "click menu item $1 of menu 1 of result" \
-e 'end tell' \
-e 'end tell'
}
答案2
此解决方案仅在 SSID 未隐藏时才有效。在我看来,您需要使用 networksetup 命令修复地址和脚本:
- 如果丢失,则创建 WiFi 网络接口
- 创建新位置
- 加入 SSID
- 修复地址
- 重新启动 wifi 电源即可完成,测试时间..