Created
September 11, 2013 05:18
-
-
Save acidprime/6519604 to your computer and use it in GitHub Desktop.
System Configuration Manual Key Manipulation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/python | |
import os # To run commands | |
import sys # The exits string | |
import plistlib # The property list library | |
# Command Declarations | |
scprefs = '/Library/Preferences/SystemConfiguration/preferences.plist' | |
scselect = '/usr/sbin/scselect' | |
network = '/usr/sbin/networksetup' | |
pl = plistlib.Plist.fromFile(scprefs) | |
cp = '/bin/cp' | |
location = "All" | |
pacfile = '' | |
searchdomains = [ 'ssd.local' , 'int.sumner.wednet.ed' ] | |
def backupPlist(scprefs): | |
os.system(cp + ' ' + scprefs + ' ' + scprefs + '.bu') | |
def getLocationGUID(location): | |
for networkset in pl['Sets']: | |
name = pl['Sets'][networkset]['UserDefinedName'] | |
if name == location: | |
print "Found Set " + name + "\tGUID:" + networkset | |
return networkset | |
def setIPv6off(networkset): | |
for service in pl['Sets'][networkset]['Network']['Service']: | |
name = pl['NetworkServices'][service]['Interface']['UserDefinedName'] | |
print "Disabling IPv6 for\t" + name + "\tGUID:" + service | |
pl['NetworkServices'][service]['IPv6']\ | |
['__INACTIVE__'] = 1 | |
def setAllLocations(location): | |
for networkset in pl['Sets']: | |
name = pl['Sets'][networkset]['UserDefinedName'] | |
print "Found Set\t" + name + "\tGUID:\t" + networkset | |
setIPv6off(networkset) | |
def setProxys(networkset): | |
for service in pl['Sets'][networkset]['Network']['Service']: | |
pl['NetworkServices'][service]['Proxies']\ | |
['ProxyAutoConfigEnable'] = 1 | |
pl['NetworkServices'][service]['Proxies']\ | |
['ProxyAutoConfigURLString'] = pacfile | |
def setSearchDomains(networkset): | |
for service in pl['Sets'][networkset]['Network']['Service']: | |
pl['NetworkServices'][service]['DNS']\ | |
['SearchDomains'] = searchdomains | |
def setAirportOff(networkset): | |
for service in pl['Sets'][networkset]['Network']['Service']: | |
name = pl['NetworkServices'][service]['Interface']['UserDefinedName'] | |
if name == 'Airport' | |
pl['NetworkServices'][service]['__INACTIVE__'] = True | |
def updateSCLocation(): | |
if '/' == '/': | |
currentset = (pl['CurrentSet']).split('/') | |
os.system(scselect + ' ' + currentset[-1]) | |
# Grab the last part of the current set Key (GUID of set or 0 for auto) | |
backupPlist(scprefs) | |
networkset = getLocationGUID(location) | |
# Find the network locations GUID | |
#setAllLocations(location) | |
#setProxys(networkset) | |
setSearchDomains(networkset) | |
updateSCLocation() | |
pl.write(scprefs) | |
sys.exit(0) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
used to be positional paramter number 3 for package based installs IIRC