2 votes

Notifier au système que les préférences ont été modifiées

J'ai désactivé le SIP ( Comment désactiver la protection de l'intégrité du système (SIP) sur OS X 10.11, El Capitan ? ) et a commencé à éditer le fichier /Library/Preferences/SystemConfiguration/preferences.plist

J'ai modifié avec succès les entrées HTTPProxy, HTTPPort, HTTPEnable et j'ai enregistré le fichier. J'ai ensuite vérifié mon adresse IP sur le web, et elle n'a pas changé. Le fichier est correctement configuré, mais le système ne sait pas qu'il a changé et utilise donc les anciens paramètres. Lorsque vous modifiez les paramètres manuellement, en appuyant sur Apply dans l'onglet Réseau notifie au système que le fichier preferences.plist a changé et qu'il doit utiliser les nouveaux paramètres. Il en va de même pour la désactivation et l'activation du wifi. J'ai changé le fichier, vérifié l'IP (c'est la même), désactivé/activé le wifi, vérifié l'IP et maintenant il a changé.

Comment puis-je déclencher cet événement de notification des changements au système de manière programmatique sur un Mac ?

1voto

charles horvath Points 151

Votre question doit être corrigée et clarifiée.

Je pense que votre question est de savoir comment forcer OS X à recharger les données après avoir modifié un fichier plist. Il y a deux méthodes pour cela.

OS X utilise un démon de mise en cache des préférences, cfprefsd. Vous pouvez simplement enregistrer votre fichier plist, puis faire sudo killall cfprefds . Il redémarrera automatiquement et devrait charger vos modifications.

La méthode recommandée pour forcer les changements est l'utilisation de la fonction commande par défaut qui informe le démon des modifications. Par exemple, le

# 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

1voto

Gordon Davisson Points 30215

Ce n'est pas la bonne façon de régler les paramètres du réseau sous OS X. Le réseau est géré par configd, qui lit ses paramètres dans /Library/Preferences/SystemConfiguration/preferences.plist au démarrage. Les modifications doivent être effectuées par l'intermédiaire de configd, afin qu'il puisse mettre à jour son état actuel, les paramètres réels de l'interface réseau et le fichier de préférences en même temps.

Je connais trois façons de procéder : via le volet Réseau des Préférences Système, avec l'option networksetup et avec la commande scutil commandement. scutil est désordonné, je ne le recommande donc pas ; heureusement networksetup est facile à utiliser. Quelque chose comme cela devrait fonctionner :

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

Notez que "Ethernet" est le nom convivial du service réseau (/interface). networksetup -listallnetworkservices pour une liste. De plus, l'argument "off" signifie que l'authentification par proxy est désactivée. Voir la page networksetup page de manuel pour plus d'informations.

BTW, veuillez désactiver le SIP. Il n'est pas nécessaire de le désactiver pour modifier les paramètres du réseau.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X