¿Hay alguna forma de ejecutar un script cuando aparece una interfaz de red en Mac OS X?
Intenté poner un script llamado ip-up en / etc / ppp pero parece que no se activa cuando me desconecto y vuelvo a conectar a una red inalámbrica.
Prefiero no tener que ejecutar un trabajo cron para verificar constantemente si el estado de la red ha cambiado. En algunas distribuciones de Linux, puede lograr esto colocando un script en /etc/network/if-up.d/. ¿Hay algo similar para Mac OS X?
Un agente de launchd que mira
/etc/resolv.conf
, y dos archivos .plist relacionados con la red bajo/Library/Preferences/SystemConfiguration/
parece funcionar para mí (en Mac OS X 10.8.4):Anteriormente solo había usado /etc/resolv.conf, pero hubo casos en que eso no fue suficiente.
fuente
<plist version="1.0">
falta la etiqueta de apertura . [1] [ apple.stackexchange.com/a/181127/56862]SystemConfiguration
archivos? Si enchufo / desconecto un cable de red, nada parece cambiar en absoluto/etc/resolv.conf
archivo se elimina y se lee cuando cambia mi estado wifi, por lo que no estoy seguro de por qué solo se ejecuta al desconectar.Debería considerar usar crankd , que precisamente le permite ejecutar scripts en respuesta a muchos eventos del sistema, como cambios en la red, actividad del sistema de archivos, inicio de aplicaciones, etc.
Como no pude encontrar ninguna documentación sensata, también escribí una pequeña publicación de blog sobre cómo comenzar a usar crankd .
fuente
Esto parece funcionar en bash:
reemplace
echo change
con su comando, teniendo en cuenta que si necesita citar algo en su comando, deberá usar'\''
:fuente
ControlPlane: "Context Sensitive Computing"
ControlPlane es un puerto directo de MarcoPolo y, de hecho, gran parte de la configuración de MarcoPolo todavía funciona con ControlPlane, ¡simplemente mejor! ControlPlane admite Mac basados en Intel de 32 y 64 bits que ejecutan Snow Leopard y superior.
fuente
Comience con launchd. Es posible que pueda utilizar una funcionalidad similar.
EDITAR : 9 años después, tal vez no. De acuerdo con esta entrada de Wikipedia :
En 2014, con OS X 10.10 e iOS 8, Apple movió el código para lanzarlo a libxpc de código cerrado
fuente