Es allí una manera de ejecutar un script cada vez que una interfaz de red acabados que se avecina? O, ¿hay un equivalente de respuesta a esta Debian pregunta en OSX?
Respuestas
¿Demasiados anuncios?Un launchd agente observando /etc/resolv.conf
, y dos relacionados con la red .plist archivos en /Library/Preferences/SystemConfiguration/
parece funcionar para mí (en Mac OS X 10.8.4):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" \
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>ifup.ddns</string>
<key>LowPriorityIO</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>/Users/Shared/bin/ddns-update.sh</string>
</array>
<key>WatchPaths</key>
<array>
<string>/etc/resolv.conf</string>
<string>/Library/Preferences/SystemConfiguration/NetworkInterfaces.plist</string>
<string>/Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
Yo sólo había usado /etc/resolv.conf, pero hay casos en que no era suficiente.
No he probado esta solución a mi auto, pero encontré este hilo: http://superuser.com/questions/201478/run-script-in-os-x-10-6-on-network-connection-like-etc-network-if-up-d/261004#261004
Usted debe considerar el uso de crankd, que precisamente le permite ejecutar secuencias de comandos en respuesta a muchos de los eventos del sistema, tales como cambios en la red, del sistema de ficheros de la actividad, el lanzamiento de aplicaciones, etc.
Como no pude encontrar ninguna documentación sensible, también escribí un pequeño post en el blog sobre cómo empezar a usar crankd.