连接到 EAP-TLS wifi 网络 os x 终端

5 macos bash terminal wifi

我目前是一名学校技术人员,我正在编写一个 shell 脚本,该脚本将自动将学校无线配置到 Mac,以便为我将配置的多个 BYOD 和员工 Mac 自动执行此过程。这涉及

  1. 将安全证书导入钥匙串

  2. 在此对话框中插入以下设置即可连接网络

  3. 创建一个名为“学校”的新网络位置

  4. 通过“自动代理配置”下的 wpad 文件配置代理

  5. 如果它是教师的笔记本电脑并且他们要求它,请创建一个名为“YouTube”的新位置,并在“Web 代理”下放入允许 YouTube 访问的代理设置

我采用的第一种方法是通过 security 命令导入安全证书(根证书颁发机构和中间证书颁发机构)。但是,我意识到没有办法配置第一次连接时出现的用于配置WiFi设置的弹出框(选择EAP-TLS作为连接模式,证书并插入用户名) . 并使用

networksetup -setairportnetwork en1 eduSTAR
Run Code Online (Sandbox Code Playgroud)

试图让对话框显示没有用。我很清楚隐藏的

airport    
Run Code Online (Sandbox Code Playgroud)

命令,但没有明显的方法可以通过此命令连接到 wifi 网络。我能想到的唯一另一种方法是通过 AppleScript 使用 GUI 脚本,我试图避免这种方法,因为操作系统版本之间的 UI 更改会使脚本无法使用。

今天,我发现我可以通过网络设置的 GUI 将一个 .mobileconfig 文件导入到网络设置中,这将处理一切(包括 wdap 代理配置),并且我还发现在此之前 networksetup 命令有一个选项导入 802.1x 配置文件。

networksetup -import8021xProfiles [service path]
Run Code Online (Sandbox Code Playgroud)

网络设置中的导入选项不允许我直接导入 .mobileconfig 文件,但我可以通过双击文件本身来导入设置。原来实际文件是一个 .networkconnect 文件,但这一点没有实际意义,因为显然,从 10.7 开始,不再支持该命令

Use a configuration profile to install 802.1X profiles on the system.
** Error: This command is no longer supported.
Run Code Online (Sandbox Code Playgroud)

所以现在,我的问题如下:

  1. 如何在不使用 GUI 脚本的情况下,通过 10.7 及更高版本上的 OS X 终端将 .networkconnect / .mobileconfig 文件导入网络设置?

  2. 通过终端导入后如何连接网络?

小智 2

要导入 .mobileconfig 命令,请使用 /usr/bin/profiles 命令。networksetup 仅用于导入 10.6 及更早版本的系统配置文件。

配置文件-I -F 文件名.mobileconfig

导入 mobileconfig 后,它将自动尝试连接,但配置文件(与网络设置不同)据我所知无法更改 SSID 的优先级顺序。

这不是您在这里所追求的,但如果您的 Mac 是 AD 域的成员并且具有 AD 集成 CA,则可以使用 mactls shell 脚本自动颁发证书以及连接配置文件。这也可能有助于比较 10.6 和 10.7 之间系统配置文件方法的差异。

http://sourceforge.net/p/mactls/