Notificar al sistema que se cambiaron las preferencias

Deshabilité SIP ( ¿Cómo deshabilito la Protección de integridad del sistema (SIP) AKA "rootless" en OS X 10.11, El Capitán? ) y comencé a editar el archivo/Library/Preferences/SystemConfiguration/preferences.plist

Edité con éxito las entradas HTTPProxy, HTTPPort, HTTPEnable y guardé el archivo. Luego revisé mi dirección IP en la web y no cambia. El archivo está configurado correctamente, pero el sistema no sabe que cambió y, por lo tanto, usa la configuración anterior. Al cambiar la configuración manualmente, presionar Applyen la pestaña Red notifica al sistema que las preferencias.plist han cambiado y que debe usar la nueva configuración. Lo mismo ocurre con la activación y desactivación de wifi. Cambié el archivo, verifiqué la IP (es la misma), apagué y encendí wifi, verifiqué la IP y ahora ha cambiado.

¿Cómo puedo activar ese evento de notificar al sistema de cambios mediante programación en una Mac?

Oh, leí tu respuesta con más detalle y tienes razón. Aún así, creo que el problema persiste incluso con SIP habilitado.

Respuestas (2)

Esta es la forma incorrecta de ajustar la configuración de red en OS X. La red está administrada por configd, que lee su configuración desde /Library/Preferences/SystemConfiguration/preferences.plist al inicio. Los cambios deben realizarse a través de configd, de modo que pueda actualizar su estado en vivo, la configuración real de la interfaz de red y el archivo de preferencias, todo junto.

Conozco tres formas de hacerlo: a través del panel Red en Preferencias del sistema, con el networksetupcomando y con el scutilcomando. scutiles desordenado, así que no lo recomiendo; afortunadamente networksetupes fácil de usar. Algo como esto debería funcionar:

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

Tenga en cuenta que "Ethernet" es el nombre descriptivo del servicio de red (/interfaz); utilizar networksetup -listallnetworkservicespara una lista. Además, el argumento "desactivado" significa que la autenticación de proxy está desactivada. Consulte la networksetuppágina del manual para obtener más información.

Por cierto, vuelve a desactivar SIP. No es necesario apagarlo para cambiar la configuración de red.

Gracias. Lo intenté y aparece un error "error -25299 al intentar crear una cuenta y una contraseña para el proxy: myProzyIp myPort". Sin embargo, al verificar la IP en el navegador, de hecho estoy detrás de un proxy.
@sanjihan Creo que eso significa que está intentando configurar un proxy autenticado, pero el nombre de usuario y la contraseña ya están en el llavero. El error -25299 parece tener que ver con agregar entradas de llavero que ya están allí.

Su pregunta necesita algo de edición y aclaración.

Lo que creo que está preguntando es cómo obligar a OS X a volver a cargar datos después de editar un archivo plist. Hay dos métodos para hacer esto.

OS X usa un demonio de almacenamiento en caché para las preferencias, cfprefsd. Simplemente puede guardar su archivo plist, luego hacer sudo killall cfprefds. Se reiniciará automáticamente y debería cargar los cambios.

La forma recomendada de forzar cambios es con el comando predeterminado , que informa al daemon de los cambios. Por ejemplo

# 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
Cualquiera que solo vuelva a leer los que se ejecutan desde la GUI, otras preferencias no se volverán a leer; debe reiniciar
Obtuve "No se encontraron procesos coincidentes" al ejecutar sudo killall cfprefds.
cometiste un error tipográfico