首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过Mac上的bash切换到指定的WiFi网络

通过Mac上的bash切换到指定的WiFi网络
EN

Unix & Linux用户
提问于 2015-11-04 02:32:14
回答 1查看 1K关注 0票数 2

我试图在Mac上的WiFi脚本中连接到特定的bash网络。

我想实现两件事:

  1. 连接到指定的网络。我尝试过networksetup -setairportnetwork en0 [network_ID],我可以从顶部的菜单栏中看到Mac正在尝试连接到网络,但最终失败了。我应该注意到,网络是受密码保护的,并且密码存储在密钥链中,因为当我手动加入这个网络时,不需要键入它。
  2. 暂停其余脚本的执行,直到成功建立连接为止。

有什么建议吗?

EN

回答 1

Unix & Linux用户

发布于 2018-09-29 04:08:57

1)连接无线网络

你想添加你的密码。尽管我的passkey网络的WiFi网络BSSID在我的密钥链中,但我只能切换到它并成功地登录,方法是将密码直接添加到明文命令行中。其他什么都没有用。

网络设置-setairportnetwork en0 通键

2)暂停脚本直到连接

您可以简单地测试上面命令(echo $?)的错误代码。小心,因为网络设置错误代码不是小事,为“失败”而欢呼可能会有帮助:

networksetup -setairportnetwork en0 mywifi mypass | grep -ic "failed"

如果结果是0,你应该是好的。您也可以直接测试实际连接性,而不是简单地连接到wifi (更好的选项imho),例如,您可以检查是否可以在网络或互联网上ping主机。您应该将所有这些放入一个while :循环中,该循环将重试该命令,直到结果为0。或者,您可以在命令中添加一个read语句来暂停脚本(我对您的问题的理解)。

最后,您可能需要添加一个超时来终止网络设置,以防在一段时间后没有网络连接: timeout命令,gnu的一部分可能会派上用场。它可以通过brew软件包管理器:brew install coreutils安装。

( 3)一条线性建议

! gtimeout 10s networksetup -setairportnetwork en0 mywifi mypass >/dev/null && echo 1 || { ping -oq www.apple.com 2>&- >/dev/null && echo "Connected" || read -n1 -r -p "Connection failed. Press any key to continue..." ; } ;

gtimeout:gnutls默认情况下将g前缀添加到其命令中,以避免与现有的同名默认实用程序混淆

/dev/null, 2>&-:避免打印各种命令的输出和错误代码

read -n 1:暂停直到按下键

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/240625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档