Notifica al sistema che le preferenze sono state cambiate

1

Ho disabilitato SIP ( Come disabilito la System Integrity Protection (SIP) AKA" rootless "su OS X 10.11, El Capitan? ) e ho iniziato a modificare il file /Library/Preferences/SystemConfiguration/preferences.plist

Ho modificato correttamente le voci HTTPProxy, HTTPPort, HTTPEnable e salvato il file. Poi ho controllato il mio indirizzo IP sul web, e non cambia. Il file è impostato correttamente, ma il sistema non lo conosce e pertanto utilizza le vecchie impostazioni. Quando si modificano le impostazioni manualmente, premendo Apply nella scheda Rete viene notificato al sistema che preferences.plist è stato modificato e che deve utilizzare le nuove impostazioni. Lo stesso vale per spegnere e accendere il wifi. Ho cambiato il file, ho controllato l'IP (è lo stesso), spengo / accendi il wifi, ho controllato l'IP e ora è cambiato.

Come posso attivare quell'evento di notifica al sistema di modifiche a livello di programmazione su un Mac?

    
posta sanjihan 24.03.2016 - 22:09
fonte

2 risposte

1

Questo è il modo sbagliato di regolare le impostazioni di rete su OS X. La rete è gestita da configd, che legge le sue impostazioni da /Library/Preferences/SystemConfiguration/preferences.plist all'avvio. Le modifiche devono essere apportate tramite configd, in modo che possa aggiornare il suo stato live, le effettive impostazioni dell'interfaccia di rete e il file delle preferenze tutti insieme.

Conosco tre modi per farlo: tramite il pannello Network in Preferenze di Sistema, con il comando networksetup e con il comando scutil . scutil è disordinato, quindi non lo consiglio; fortunatamente networksetup è facile da usare. Qualcosa del genere dovrebbe funzionare:

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

Si noti che "Ethernet" è il nome descrittivo del servizio di rete (/ interfaccia); usa networksetup -listallnetworkservices per una lista. Inoltre, l'argomento "off" significa che l'autenticazione proxy è disattivata. Per ulteriori informazioni, consulta la % pagina man di networksetup .

A proposito, si prega di disattivare il SIP. Non è necessario spegnerlo per modificare le impostazioni di rete.

    
risposta data 25.03.2016 - 02:08
fonte
0

La tua domanda richiede alcune modifiche e chiarimenti.

Quello che penso tu stia chiedendo è come forzare OS X a ricaricare i dati dopo aver modificato un file plist. Ci sono due metodi per farlo.

OS X utilizza un daemon di cache per le preferenze, cfprefsd. Puoi semplicemente salvare il tuo file plist, quindi fare sudo killall cfprefds . Si riavvierà automaticamente e dovrebbe caricare le modifiche.

Il metodo consigliato per forzare le modifiche è con il comando defaults , che informa il daemon delle modifiche. Ad esempio

# 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
    
risposta data 25.03.2016 - 01:15
fonte

Leggi altre domande sui tag