设为首页 收藏本站
查看: 1334|回复: 0

[经验分享] Mac OS X:script实现添加无线网连接

[复制链接]

尚未签到

发表于 2016-5-16 09:09:53 | 显示全部楼层 |阅读模式
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文件:
  
  #!/bin/bash# --------------------------------------------------------------------# Script to add Wwireless connection to system preferred network## Name: addwireless## Operating System:#    Tested on 10.5.8## 2010 Tony Liu# Copyright GNU GPL# Version 0.1.1## Version History#    0.0.1: 2009-10-11 Initial#    0.1.1: 2010-05-29 testing passed# --------------------------------------------------------------------## Usage: change the following parameters to fit your needs.#yourSSID="YourwirelessSSID"yourPWD="ThewirelessPasswrod"SecurityType="WirelessType"# WEP is testedWEPOpenSystem=true## Start.#logger "Adding Wireless started."networkUUID=`uuidgen`pwdUUID=`uuidgen`cTime=`date "+%a %b %e %H:%M:%S %Z %Y"`function addSSID_Airport_Pref {sudo plistbuddy /Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist -c "add KnownNetworks:$networkUUID dict"sudo plistbuddy /Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist -c "add KnownNetworks:$networkUUID:SecurityType string $SecurityType"sudo plistbuddy /Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist -c "add KnownNetworks:$networkUUID:SSID_STR string $yourSSID"sudo plistbuddy /Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist -c "add KnownNetworks:$networkUUID:'Unique Password ID' string $pwdUUID"sudo plistbuddy /Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist -c "add KnownNetworks:$networkUUID:'Remembered channels' array {0 integer 1}"sudo plistbuddy /Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist -c "add KnownNetworks:$networkUUID:_timeStamp date $cTime"sudo plistbuddy /Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist -c "add KnownNetworks:$networkUUID:WEPOpenSystem bool $WEPOpenSystem"#sudo plistbuddy /Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist -c "print KnownNetworks:$networkUUID"}function addPWD_SystemKeychain{security add-generic-password -a "$yourSSID" -s "$pwdUUID" -p "$yourPWD" -l "$yourSSID" -D "AirPort network password" -A /Library/Keychains/System.keychain}function addPreferredNetworks{currentSet=`plistbuddy /Library/Preferences/SystemConfiguration/preferences.plist -c "print CurrentSet"`currentSet=${currentSet/////":"}sudo plistbuddy /Library/Preferences/SystemConfiguration/preferences.plist -c "add $currentSet:Network:Interface:en1:AirPort:PreferredNetworks:0 dict"sudo plistbuddy /Library/Preferences/SystemConfiguration/preferences.plist -c "add $currentSet:Network:Interface:en1:AirPort:PreferredNetworks:0:SSID_STR string $yourSSID"sudo plistbuddy /Library/Preferences/SystemConfiguration/preferences.plist -c "add $currentSet:Network:Interface:en1:AirPort:PreferredNetworks:0:SecurityType string 'WEP'"sudo plistbuddy /Library/Preferences/SystemConfiguration/preferences.plist -c "add $currentSet:Network:Interface:en1:AirPort:PreferredNetworks:0:'Unique Newtork ID' string $networkUUID"sudo plistbuddy /Library/Preferences/SystemConfiguration/preferences.plist -c "add $currentSet:Network:Interface:en1:AirPort:PreferredNetworks:0:'Unique Password ID' string $pwdUUID"sudo plistbuddy /Library/Preferences/SystemConfiguration/preferences.plist -c "set $currentSet:Network:Interface:en1:AirPort:RequireAdmin bool No"}function CleanAll{# 1. Delete from preferences.plistcurrentSet=`plistbuddy /Library/Preferences/SystemConfiguration/preferences.plist -c "print CurrentSet"`currentSet=${AA/////":"}sudo plistbuddy /Library/Preferences/SystemConfiguration/preferences.plist -c "delete $currentSet:Network:Interface:en1:AirPort:PreferredNetworks:0"#2. Delete Airport_Prefsudo plistbuddy /Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist -c "delete KnownNetworks:$networkUUID"#3. Delete Keychainsecurity default-keychain -s /Library/Keychain/System.keychainsudo security add-generic-password -a "$yourSSID" -D "AirPort network password" -s "" -l "" -w "" -j "wireless_setup_v1.0" -A -Usecurity default-keychain -s ""}ln -f /usr/libexec/PlistBuddy /usr/sbin/plistbuddyaddSSID_Airport_Pref addPWD_SystemKeychainaddPreferredNetworksnetworksetup -setairportpower offsleep 5networksetup -setairportpower onlogger "Adding Wireless finished successfully."exit 0
  
  
  Tony Liu, May 29, 2010
  in Calgary

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-217532-1-1.html 上篇帖子: 转 Mac OS X中配置Apache + PHP + MySQL 下篇帖子: Mac OS X 10.9 启用 Web 服务器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表