I disabled SIP (How do I disable System Integrity Protection (SIP) AKA "rootless" on OS X 10.11, El Capitan?) and started editing the file /Library/Preferences/SystemConfiguration/preferences.plist
I successfully edited the entries HTTPProxy, HTTPPort, HTTPEnable and save the file. Then I checked my IP address on the web, and it doesn't change. The file is set correctly, but the system doesn't know it changed and therefore it uses the old settings. When changing settings manually, hitting Apply
in the Network Tab notifies the system that preferences.plist has changed and that it must use the new settings. Same goes for turning wifi off and on. I changed the file, checked the IP (it is the same) turn wifi off/on, checked the IP and now it has changed.
How can I trigger that event of notifying the system of changes programmatically on a Mac?
Best Answer
This is the wrong way to adjust the network settings on OS X. The network is managed by configd, which reads its settings from /Library/Preferences/SystemConfiguration/preferences.plist at startup. Changes should be made via configd, so that it can update its live state, the actual network interface settings, and the preferences file all together.
I know of three ways of doing this: via the Network pane in System Preferences, with the
networksetup
command, and with thescutil
command.scutil
is messy, so I don't recommend it; fortunatelynetworksetup
is easy to use. Something like this should work:Note that "Ethernet" is the user-friendly name of the network service (/interface); use
networksetup -listallnetworkservices
for a list. Also, the "off" argument means that proxy authentication is off. See thenetworksetup
man page for more info.BTW, please turn SIP back off. You do not need to turn it off in order to change the network settings.