Todo script localizado em /etc/network/if-up.d é executado quando uma interface é criada?

12

Todos os scripts em /etc/network/if-up.d são executados quando uma interface de rede é aberta?

Em caso afirmativo, qual é o comando de pós-up no arquivo de interfaces?

Spig
fonte
1
Todo o conteúdo das pastas ".d", convencionalmente, é executado. Alguns deles realmente precisam da extensão de arquivo ".sh". Todos os arquivos devem ser executáveis.
Kolypto #

Respostas:

14

Sim, geralmente qualquer script marcado como executável e colocado nessa pasta é executado. Os arquivos possuem são limitados a um conjunto específico de nomes porque as partes de execução são usadas.

O post-upfaz a mesma coisa que usar up. Colocar um script no if-up.d é o mesmo que simplesmente usar um post-upque aponte para um script ou comando em outro lugar. Normalmente, você usaria o post up up quando precisasse executar um único comando para uma única interface. Quando você tem algo mais complexo, você cria um script.

interfaces homem

...
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.

peças de homem

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
fonte
1
Portanto, se você deseja que um script seja executado somente após a interface estar pronta e precisar de algumas coisas na pasta if-up.d para estar pronto, é necessário nomeá-lo para que caia na ordem lexical após o comando que você precisa operar , ou coloque em outro diretório e execute o comando pós-up. Isso soa certo?
Spig
1
Sim, acredito que sim.
Zoredache
1
Uma resposta detalhada e agradável. Mesmo 10 anos depois, ainda fornecendo informações.
Xofo
Você realmente precisa ler a página de manual das peças de execução completamente para reconhecer que mesmo scripts com um nome de arquivo correto usando a extensão .sh não serão executados. Citação: "... ajudaria muito se houvesse alguma informação sobre ignorar um script por causa de um ponto. Perdi muito tempo na solução de problemas ... a declaração '... os nomes devem consistir inteiramente em maiúsculas e minúsculas letras, dígitos, sublinhados e hífens. ' não basta. Li duas vezes e não me ajudou a entender onde está o meu problema. Deveria estar escrito explicitamente que os scripts com pontos são ignorados ".
ChrisW
Este 'bug' é "Will not Fix" no Debian: O run-parts não executar script com extensão sh bugs.launchpad.net/ubuntu/+source/debianutils/+bug/38022
ChrisW