10 votos

¿Cómo ejecutar una secuencia de comandos después de una interfaz de red viene?

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?

9voto

mivk Puntos 206

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.

3voto

Manrico Corazzi Puntos 6458

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.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X