¿Se ejecuta cada script ubicado en /etc/network/if-up.d cuando se abre una interfaz?

12

¿Se ejecutan todos los scripts en /etc/network/if-up.d cuando se abre una interfaz de red?

Si es así, ¿para qué sirve el comando post-up en el archivo de interfaces?

Espiga
fuente
1
Todo el contenido de las carpetas " .d", convencionalmente, se ejecuta. Algunos de ellos realmente necesitan la extensión de nombre de archivo " .sh". Todos los archivos deben ser ejecutables.
kolypto

Respuestas:

14

Sí, generalmente se ejecuta cualquier script marcado como ejecutable y colocado en esa carpeta. Los archivos que tienen están limitados a un conjunto específico de nombres porque se usan partes de ejecución.

El post-uphace lo mismo que el uso up. Colocar un script en if-up.d es lo mismo que simplemente usar un post-upque apunta a un script o comando en otro lugar. Por lo general, utilizaría el up | post-up cuando solo necesitara ejecutar un solo comando para una única interfaz. Cuando tienes algo más complejo, creas un script.

interfaces hombre

...
up command

post-up command
      Run  command  after  bringing the interface up.  If this command
      fails then ifup aborts, refraining from marking the interface as
      configured  (even  though it has really been configured), prints
      an error message, and exits with status 0.   This  behavior  may
      change in the future.
...
There  exists  for  each  of  the  above  mentioned options a directory
/etc/network/if-<option>.d/ the scripts in which are run (with no argu-
ments) using run-parts(8) after the option itself has been processed.

hombre run-parts

run-parts  runs  all  the  executable  files  named  within constraints
described below,

If  the  --lsbsysinit  option  is not given then the names must consist
entirely of upper and lower  case  letters,  digits,  underscores,  and
hyphens.
...
Files are run in the lexical sort  order  of  their  names  unless  the
--reverse  option  is given, in which case they are run in the opposite
order.
Zoredache
fuente
1
Entonces, si desea que un script se ejecute solo después de que la interfaz esté activa y necesita cosas en la carpeta if-up.d para estar listo, debe nombrarlo para que caiga en orden léxico después del comando que necesita para operar , o poner en otro directorio y ejecutar a través del comando post-up. ¿Eso suena bien?
Spig el
1
Sí, así lo creo.
Zoredache el
1
Una respuesta tan agradable y detallada. Incluso 10 años después, todavía proporciona información.
Xofo
Realmente tiene que leer la página de manual de partes de ejecución a fondo para reconocer que incluso los scripts con un nombre de archivo correcto con la extensión .sh no se ejecutarán. Cita: "... sería de gran ayuda si hubiera alguna información sobre omitir un script debido a un punto. Perdí mucho tiempo en la solución de problemas ... la declaración '... los nombres deben consistir completamente en mayúsculas y minúsculas letras, dígitos, guiones bajos y guiones. no es suficiente. Lo leí dos veces y no me ayudó a entender dónde está mi problema. Debería escribirse explícitamente que se omiten los scripts con puntos ".
ChrisW
Este 'error' es "No se solucionará" en Debian: run-parts no ejecuta script con la extensión sh bugs.launchpad.net/ubuntu/+source/debianutils/+bug/38022
ChrisW