Mac OS X:script实现添加无线网连接

Mac OS X:脚本实现添加无线网连接

这是以前另一篇《Mac OS X: bash脚本实现添加无线SSID(Update2009-10-09) 》的更新,

当初在Mac OS X 10.4 Tiger系统里面,要通过命令添加无线网连接,那是相当的简单,只要找到airport命令就好办了。可是在Mac OS X 10.5 Leopard的各个版本中,就没有那么简单了,因为原来的方式没有使用Keychain来管理密码,都是Airport自己管理密码和连接的储存,随着安全性不断提高的要求,Keychain被Apple接受为所有安全信息管理的全局工具,因此无线网络也被划归通过它了管理了,另外,它还引入Preferred Network-优先网络-的概念,这样就又多了一个需要管理和操作的要点。所以单单使用原来的airport命令就无法完成现在的任务了。同时Apple推荐使用networksetup这个命令,作为一个更高层次的命令来管理所有网络事物,所以大家也不必找airport了,而是通过networksetup来操作了,但是问题是,单单通过10.5中提供的networksetup -setairportnetwork <SSID> <password>命令依然无法完成任务,因为这个命令可以实现无线网连接,但是它不能储存密码,并把该连接添加到Preferred NEtwork中,这样不用说重新启动,就是切换用户或者从ScreenSaver中回来,刚才建立的连接都会丢失。

这样的问题是,对于个人用户没有任何影响,因为绝大多数情况下,用户通过图形界面操作,而对于企业系统管理员就会很麻烦。原来的解决办法是,把原来制作好的系统影像文件重新制作,以便预先把企业的无线网络添加好。这样虽然解决问题,但是还有不便之处,比如,一个大型企业/教育系统内,为了安全起见,不是所有的电脑都可以默认登陆到所有其它部门/学校的无线网络的,那么系统管理员没有一个远程方便控制的方式,一是不利于远程纠错,而是没有一个方法来控制电脑的可适应性。

所以,现在在Mac OS X 10.6 Snow Leopard中添加了更多的命令行参数,针对无线网络的,就有如下的命令:

#networksetup -getairportnetwork <device name>
#networksetup -setairportnetwork <network> <device name> [password]
#networksetup -getairportpower <device name>
#networksetup -setairportpower <device name> <on off>
#networksetup -listpreferredwirelessnetworks <device name>
#networksetup -addpreferredwirelessnetworkatindex <device name> <network> <index> <security type> [password]
#networksetup -removepreferredwirelessnetwork <device name> <network>
#networksetup -removeallpreferredwirelessnetworks <device name>

而其中的-addpreferredwirelessnetworkatindex参数就可以完全做到添加无线网络的要求。

原来写的那些脚本, 星期五终于有时间调试了,其实它证明了我的判断的正确,完全可以实现方便实时的控制无线网络的建立,从而为管理员在10.5 Leopard系统上方便控制无线网络提供便利。

这里把那个测试后的脚本在帖一下,以备后用, 它需要plistbuddy命令行才操作plist文件:


Tony Liu, May 29, 2010

in Calgary

你可能感兴趣的:(Mac OS X)