Skip to content

Instantly share code, notes, and snippets.

@acidprime
Created September 11, 2013 05:18
Show Gist options
  • Save acidprime/6519604 to your computer and use it in GitHub Desktop.
Save acidprime/6519604 to your computer and use it in GitHub Desktop.
System Configuration Manual Key Manipulation
#!/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)
@acidprime
Copy link
Author

if '/' == '/':
...

used to be positional paramter number 3 for package based installs IIRC

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment