Ogni script che si trova in /etc/network/if-up.d viene eseguito quando viene visualizzata un'interfaccia?


12

Tutti gli script in /etc/network/if-up.d vengono eseguiti quando viene visualizzata un'interfaccia di rete?

In tal caso, a cosa serve il comando post-up nel file interfaces?


1
Tutti i contenuti delle cartelle " .d", convenzionalmente, vengono eseguiti. Alcuni di loro in realtà hanno bisogno dell'estensione del file " .sh". Tutti i file dovrebbero essere eseguibili.
Kolypto,

Risposte:


14

Sì, generalmente viene eseguito qualsiasi script contrassegnato come eseguibile e inserito in quella cartella. I file sono limitati a un set specifico di nomi perché vengono utilizzate parti di esecuzione.

Lo post-upfa la stessa cosa usando up. Inserire uno script in if-up.d è come usare semplicemente uno post-upche punta a uno script o comando da qualche altra parte. Di solito si usa up | post-up solo quando è necessario eseguire un singolo comando per una singola interfaccia. Quando hai qualcosa di più complesso, crei una sceneggiatura.

interfacce uomo

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

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

1
Quindi, se vuoi che uno script venga eseguito solo dopo che l'interfaccia è attiva e ha bisogno di cose nella cartella if-up.d per essere pronta, o devi nominarla in modo che cada nell'ordine lessicale dopo il comando che devi operare oppure inseriscilo in un'altra directory ed eseguilo tramite il comando post-up. Suona bene?
Spig

1
Sì, lo credo.
Zoredache,

1
Una risposta così bella e dettagliata. Anche 10 anni dopo, continuando a fornire informazioni.
Xofo

Devi davvero leggere attentamente la pagina man delle parti di esecuzione per riconoscere, che anche gli script con un nome di file altrimenti corretto usando l'estensione .sh non verranno eseguiti. Citazione: "... sarebbe di grande aiuto se ci fossero delle informazioni su come saltare uno script a causa di un punto. Ho perso un sacco di tempo nella risoluzione dei problemi ... la frase" ... i nomi devono essere interamente in maiuscolo e minuscolo lettere, cifre, trattini bassi e trattini. " non è abbastanza. L'ho letto due volte e non mi ha aiutato a capire dov'è il mio problema. Dovrebbe essere esplicitamente scritto che gli script con punti vengono saltati ".
ChrisW,

Questo 'bug' è "non risolverà" in Debian: run-parts non viene eseguito lo script con estensione sh bugs.launchpad.net/ubuntu/+source/debianutils/+bug/38022
ChrisW
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.