Powiadom system, że preferencje zostały zmienione

1

Wyłączyłem SIP ( Jak wyłączyć ochronę integralności systemu (SIP) AKA „bez roota” w systemie OS X 10.11, El Capitan? ) i rozpoczął edycję pliku /Library/Preferences/SystemConfiguration/preferences.plist

Udało mi się edytować wpisy HTTPProxy, HTTPPort, HTTPEnable i zapisać plik. Następnie sprawdziłem mój adres IP w sieci i to się nie zmienia. Plik jest ustawiony poprawnie, ale system nie wie, że się zmienił i dlatego używa starych ustawień. Podczas ręcznej zmiany ustawień, uderzanie Apply w zakładce Sieć powiadamia system, który zmienił preferences.plist i musi korzystać z nowych ustawień. To samo dotyczy włączania i wyłączania wifi. Zmieniłem plik, sprawdziłem adres IP (jest taki sam) wyłącz / włącz wifi, sprawdź adres IP i teraz się zmienił.

Jak mogę wywołać to zdarzenie programowo powiadamiając system zmian na komputerze Mac?

sanjihan
źródło
Och, czytam twoją odpowiedź bardziej szczegółowo i masz rację. Nadal uważam, że problem utrzymuje się nawet przy włączonym SIP.
sanjihan

Odpowiedzi:

1

Jest to zły sposób na dostosowanie ustawień sieciowych w OS X. Sieć jest zarządzana przez configd, który odczytuje ustawienia z /Library/Preferences/SystemConfiguration/preferences.plist podczas uruchamiania. Zmiany należy wprowadzać za pomocą configd, aby zaktualizować swój stan na żywo, rzeczywiste ustawienia interfejsu sieciowego i plik preferencji.

Znam trzy sposoby, aby to zrobić: za pomocą panelu Sieć w Preferencjach systemowych za pomocą networksetup polecenie i za pomocą scutil dowództwo. scutil jest brudny, więc go nie polecam; na szczęście networksetup jest łatwy w użyciu. Coś takiego powinno działać:

sudo networksetup -setwebproxy Ethernet proxyserver.example.com 80 off

Należy zauważyć, że „Ethernet” jest przyjazną dla użytkownika nazwą usługi sieciowej (/ interfejsu); posługiwać się networksetup -listallnetworkservices dla listy. Ponadto argument „off” oznacza, że ​​uwierzytelnianie proxy jest wyłączone. Zobacz networksetup strona man po więcej informacji.

BTW, proszę wyłączyć SIP. Nie musisz go wyłączać, aby zmienić ustawienia sieciowe.

Gordon Davisson
źródło
Dziękuję Ci. Próbowałem tego i pojawia się błąd „błąd -25299 próbuje utworzyć konto i hasło dla proxy: myProzyIp myPort”. Jednak po sprawdzeniu adresu IP w brwoserze rzeczywiście jestem za serwerem proxy.
sanjihan
@ Sanjihan I myśleć oznacza to, że próbujesz skonfigurować uwierzytelnionego proxy, ale nazwa użytkownika i hasło są już w pęku kluczy. Błąd -25299 wydaje się mieć związek z dodawaniem już istniejących wpisów pęku kluczy.
Gordon Davisson
0

Twoje pytanie wymaga edycji i wyjaśnienia.

Myślę, że pytasz, jak zmusić OS X do ponownego załadowania danych po edycji pliku plist. Są na to dwie metody.

OS X używa demona buforującego dla preferencji, cfprefsd. Możesz po prostu zapisać plik plist, a następnie zrobić sudo killall cfprefds. Zostanie automatycznie uruchomiony ponownie i powinien załadować zmiany.

Zalecanym sposobem wymuszania zmian jest użycie polecenie domyślne , który informuje demona o zmianach. Na przykład

# Reveal IP address, hostname, OS version, etc. when clicking the clock
# in the login window
sudo defaults write /Library/Preferences/com.apple.loginwindow AdminHostInfo HostName
Hefewe1zen
źródło
Ten, kto ponownie odczytuje tylko te, które działają z GUI, nie odczyta ponownie innych prefiksów - musisz zrestartować komputer
Mark
Dostałem „Nie znaleziono żadnych pasujących procesów” podczas uruchamiania sudo killall cfprefds.
sanjihan
Zrobiłeś literówkę
Hefewe1zen