Wird jedes Skript in /etc/network/if-up.d ausgeführt, wenn eine Schnittstelle aufgerufen wird?


12

Werden alle Skripte in /etc/network/if-up.d ausgeführt, wenn eine Netzwerkschnittstelle aufgerufen wird?

Wenn ja, wozu dient der Befehl post-up in der Interface-Datei?


1
Alle " .d " -Ordnerinhalte werden herkömmlicherweise ausgeführt. Einige von ihnen benötigen tatsächlich die Dateierweiterung ".sh". Alle Dateien sollten ausführbar sein.
kolypto

Antworten:


14

Ja, im Allgemeinen wird jedes Skript ausgeführt, das als ausführbar markiert und in diesem Ordner abgelegt ist. Die Dateien sind auf einen bestimmten Satz von Namen beschränkt, da Run-Parts verwendet werden.

Das post-upmacht das gleiche wie mit up. Das Platzieren eines Skripts in der Datei if-up.d entspricht dem einfachen Verwenden post-upeines Skripts, das auf ein Skript oder einen Befehl an einer anderen Stelle verweist. Normalerweise verwenden Sie die Option up | post-up, wenn Sie nur einen Befehl für eine einzelne Schnittstelle ausführen müssen. Wenn Sie etwas komplexeres haben, würden Sie ein Skript erstellen.

Mensch Schnittstellen

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

Mann läuft-Teile

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
Wenn Sie möchten, dass ein Skript erst ausgeführt wird, nachdem die Benutzeroberfläche aktiv ist und die erforderlichen Informationen im Ordner "if-up.d" vorliegen, müssen Sie entweder den Namen eingeben, damit er nach dem Befehl, den Sie ausführen müssen, in die lexikalische Reihenfolge wechselt oder in ein anderes Verzeichnis kopieren und mit dem Befehl post-up ausführen. Klingt das richtig?
Spig

1
Ja, ich glaube schon.
Zoredache

1
So eine schöne ausführliche Antwort. Auch 10 Jahre später noch Einblick gewähren.
Xofo

Sie müssen die run-parts-Manpage wirklich gründlich lesen, um zu erkennen, dass selbst Skripte mit einem ansonsten korrekten Dateinamen mit der Erweiterung .sh nicht ausgeführt werden. Zitat: "... es wäre sehr hilfreich, wenn es Informationen zum Überspringen eines Skripts aufgrund eines Punkts gäbe. Ich habe viel Zeit bei der Fehlerbehebung verloren ... die Anweisung '... die Namen müssen ausschließlich aus Groß- und Kleinbuchstaben bestehen Buchstaben, Ziffern, Unterstriche und Bindestriche. ' ist nicht genug. Ich habe es zweimal gelesen und es hat mir nicht geholfen zu verstehen, wo mein Problem ist. Es sollte ausdrücklich geschrieben werden, dass Skripte mit Punkten übersprungen werden. "
ChrisW

Dieser 'Fehler' wird in Debian nicht behoben
ChrisW
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.