Zum Inhalt springen

Systemd/networkd-dispatcher: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
 
(16 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
= networkd-dispatcher =
'''Systemd/networkd-dispatcher'''


=== Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet: ===
== Beschreibung ==
[[Systemd/networkd-dispatcher|networkd-dispatcher]] ist ein Zusatzprogramm für [https://wiki.ubuntuusers.de/systemd/networkd/ systemd-networkd]. Während man bei systemd-networkd die Konfiguration der Netzwerkschnittstellen ausschließlich über Deklarationen vornimmt, erlaubt networkd-dispatcher auf Zustandsänderungen bei den Netzwerkschnittstellen zu reagieren und Programme zu starten.


Dieser Artikel ist mit keiner aktuell unterstützten Ubuntu-Version getestet! Bitte teste diesen Artikel für eine Ubuntu-Version, welche aktuell unterstützt wird. Dazu sind die Hinweise zum Testen von Artikeln zu beachten.  
Damit ist networkd-dispatcher für systemd-networkd das Pendant zu [https://wiki.ubuntuusers.de/NetworkManager/Dispatcher/ nm-dispatcher] für [https://wiki.ubuntuusers.de/NetworkManager/ NetworkManager] und den Skripten in '''/etc/network/if-*.d/''' für [https://wiki.ubuntuusers.de/interfaces/ ifupdown].


'''networkd-dispatcher''' ist ein Zusatzprogramm für [https://wiki.ubuntuusers.de/systemd/networkd/ systemd-networkd]. Während man bei systemd-networkd die Konfiguration der Netzwerkschnittstellen ausschließlich über Deklarationen vornimmt, erlaubt networkd-dispatcher auf Zustandsänderungen bei den Netzwerkschnittstellen zu reagieren und Programme zu starten.
== Arbeitsweise ==
Die beiden [https://wiki.ubuntuusers.de/systemd/Units/ systemd-Units] '''systemd-networkd.service''' und '''networkd-dispatcher.service''' müssen aktiv sein. Kontrolle[https://wiki.ubuntuusers.de/systemd/networkd-dispatcher/#source-2 [2]]:
systemctl status systemd-networkd.service
systemctl status networkd-dispatcher.service


Damit ist networkd-dispatcher für systemd-networkd das Pendant zu [https://wiki.ubuntuusers.de/NetworkManager/Dispatcher/ nm-dispatcher] für [https://wiki.ubuntuusers.de/NetworkManager/ NetworkManager] und den Skripten in '''/etc/network/if-*.d/''' für [https://wiki.ubuntuusers.de/interfaces/ ifupdown].
Sobald systemd-networkd bei einer Schnittstelle einen Zustandswechsel erkennt, startet es networkd-dispatcher und dieser startet die Programme in dem Verzeichnis, welches zu dem neuen Zustand der Schnittstelle gehört. Dies funktioniert auch, wenn systemd-networkd die Schnittstelle nicht selber konfiguriert hat.


== Installation ==
== Installation ==
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo apt-get install networkd-dispatcher
</syntaxhighlight>


Das Paket '''networkd-dispatcher''' ist bei jedem Ubuntu-System als Standardkomponente bereits installiert. Bei Bedarf kann es so installiert werden:* '''networkd-dispatcher'''
== Aufruf ==
<syntaxhighlight lang="bash" highlight="1" line copy>
</syntaxhighlight>


=== Optionen ===
{| class="wikitable sortable options gnu big"
|-
! Unix !! GNU !! Parameter !! Beschreibung
|-
| || || ||
|-
|}


=== Parameter ===
=== Umgebungsvariablen ===
=== Exit-Status ===
{| class="wikitable options col1center big"
|-
! Wert !! Beschreibung
|-
| 0 || Erfolg
|-
| >0  || Fehler
|}


Befehl zum Installieren der Pakete:
== Anwendung ==
<syntaxhighlight lang="bash" highlight="1" line copy>
</syntaxhighlight>


sudo apt-get install networkd-dispatcher  
=== Logger ===
Man kann dieses Skript als '''/etc/networkd-dispatcher/routable.d/00-logger''' ablegen, ausführbar machen und in den anderen Unterverzeichnissen von '''/etc/networkd-dispatcher/''' jeweils darauf verlinken:
#! /bin/bash -e
LOG ()  { echo ${*:- } ;} >&2
LOG IFACE=$IFACE $OperationalState
 
Man erhält im Systemlog Meldungen, wann immer sich der Zustand einer Schnittstelle ändert. Das kann bei der Fehlerdiagnose helfen:
journalctl -b -u networkd-dispatcher.service
 
Beispeilausgabe
Mai 04 10:01:29 networkd-dispatcher[95390]: IFACE=eth0 routable
Mai 04 10:04:37 networkd-dispatcher[95577]: IFACE=eth0 off
Mai 04 10:04:38 networkd-dispatcher[95580]: IFACE=WLAN routable


== Arbeitsweise ==
== Konfiguration ==
=== Dateien ===
{| class="wikitable options big"
|-
! Datei !! Beschreibung
|-
| ||
|-
| ||
|}
 
<noinclude>


Die beiden [https://wiki.ubuntuusers.de/systemd/Units/ systemd-Units] '''systemd-networkd.service''' und '''networkd-dispatcher.service''' müssen aktiv sein. Kontrolle[https://wiki.ubuntuusers.de/systemd/networkd-dispatcher/#source-2 [2]]:
== Anhang ==
=== Siehe auch ===
<div style="column-count:2">
<categorytree hideroot=on mode="pages">{{BASEPAGENAME}}</categorytree>
</div>
----
{{Special:PrefixIndex/{{BASEPAGENAME}}/}}


systemctl status systemd-networkd.service
=== Dokumentation ===
systemctl status networkd-dispatcher.service
; Man-Page
# [https://manpages.debian.org/stable/procps/pgrep.1.de.html prep(1)]


Sobald systemd-networkd bei einer Schnittstelle einen Zustandswechsel erkennt, startet es networkd-dispatcher und dieser startet die Programme in dem Verzeichnis, welches zu dem neuen Zustand der Schnittstelle gehört. Dies funktioniert auch, wenn systemd-networkd die Schnittstelle nicht selber konfiguriert hat.
<!--
; Info-Pages
-->


== Konfiguration ==
=== Links ===
==== Projekt ====
==== Weblinks ====
# [http://manpages.ubuntu.com/manpages/focal/man8/networkd-dispatcher.8.html Manpage zu networkd-dispatcher] 🇬🇧 – bei [https://wiki.ubuntuusers.de/Focal_Fossa/ Focal Fossa]
# [https://wiki.ubuntuusers.de/systemd/ systemd]
# [https://wiki.ubuntuusers.de/systemd/networkd/ systemd/networkd]
# [https://wiki.ubuntuusers.de/systemd/Units/ systemd/Units]
# [https://wiki.ubuntuusers.de/systemd/networkd-dispatcher/ systemd/networkd-dispatcher]


networkd-dispatcher startet Programme in Unterverzeichnissen von* '''/etc/networkd-dispatcher''' und
[[Kategorie:new]]
* '''/usr/lib/networkd-dispatcher'''


</noinclude>


= TMP =
== Konfiguration ==
[[Systemd/networkd-dispatcher|networkd-dispatcher]] startet Programme in Unterverzeichnissen von
* '''/etc/networkd-dispatcher'''
* '''/usr/lib/networkd-dispatcher'''


Dabei überlagern Dateien unter '''/etc''' gleichnamige Dateien unter '''/usr'''. Man sollte eigene Dateien vorzugsweise unter '''/etc''' ablegen und '''/usr''' den Distributionen vorbehalten.
Dabei überlagern Dateien unter '''/etc''' gleichnamige Dateien unter '''/usr'''. Man sollte eigene Dateien vorzugsweise unter '''/etc''' ablegen und '''/usr''' den Distributionen vorbehalten.


Es werden diese Unterverzeichnisse berücksichtigt:
Es werden diese Unterverzeichnisse berücksichtigt
ls /etc/networkd-dispatcher/
carrier.d  degraded.d  dormant.d  no-carrier.d  off.d  routable.d


ls /etc/networkd-dispatcher/
Der Name des Unterverzeichnisses entspricht dem neuen Zustand der Schnittstelle
carrier.d  degraded.d  dormant.d  no-carrier.d  off.d  routable.d
 
Der Name des Unterverzeichnisses entspricht natürlich dem neuen Zustand der Schnittstelle.




Zeile 87: Zeile 160:
* Die Variablen <tt>OperationalState</tt> und <tt>AdministrativeState</tt> entsprechen wohl (d.h. nach bisherigen Erfahrungen) den Ausgaben von [https://wiki.ubuntuusers.de/systemd/networkd/#Dienstprogramm-networkctl networkctl].
* Die Variablen <tt>OperationalState</tt> und <tt>AdministrativeState</tt> entsprechen wohl (d.h. nach bisherigen Erfahrungen) den Ausgaben von [https://wiki.ubuntuusers.de/systemd/networkd/#Dienstprogramm-networkctl networkctl].
* Die Variable <tt>STATE</tt> entspricht wohl dem Verzeichnis bzw. dem neuen Zustand der Schnittstelle.
* Die Variable <tt>STATE</tt> entspricht wohl dem Verzeichnis bzw. dem neuen Zustand der Schnittstelle.
== Beispiele ==
=== Logger ===
Man kann dieses Skript als '''/etc/networkd-dispatcher/routable.d/00-logger''' ablegen, ausführbar machen und in den anderen Unterverzeichnissen von '''/etc/networkd-dispatcher/''' jeweils darauf verlinken:
<nowiki>#! /bin/bash -e</nowiki>
LOG ()  { echo ${*:- } ;} >&2
LOG IFACE=$IFACE $OperationalState
Man erhällt dann im Systemlog Meldungen, wann immer sich der Zustand einer Schnittstelle ändert. Das kann bei der Fehlerdiagnose helfen:
journalctl -b -u networkd-dispatcher.service
Beispeilausgabe (gekürzt):
Mai 04 10:01:29 networkd-dispatcher[95390]: IFACE=eth0 routable
Mai 04 10:04:37 networkd-dispatcher[95577]: IFACE=eth0 off
Mai 04 10:04:38 networkd-dispatcher[95580]: IFACE=WLAN routable
== Links ==
* [http://manpages.ubuntu.com/manpages/focal/man8/networkd-dispatcher.8.html Manpage zu networkd-dispatcher] 🇬🇧 – bei [https://wiki.ubuntuusers.de/Focal_Fossa/ Focal Fossa]
* [https://wiki.ubuntuusers.de/systemd/ systemd]
* [https://wiki.ubuntuusers.de/systemd/networkd/ systemd/networkd]
* [https://wiki.ubuntuusers.de/systemd/Units/ systemd/Units]
[https://wiki.ubuntuusers.de/systemd/networkd-dispatcher/ systemd/networkd-dispatcher]

Aktuelle Version vom 18. Oktober 2025, 11:44 Uhr

Systemd/networkd-dispatcher

Beschreibung

networkd-dispatcher ist ein Zusatzprogramm für systemd-networkd. Während man bei systemd-networkd die Konfiguration der Netzwerkschnittstellen ausschließlich über Deklarationen vornimmt, erlaubt networkd-dispatcher auf Zustandsänderungen bei den Netzwerkschnittstellen zu reagieren und Programme zu starten.

Damit ist networkd-dispatcher für systemd-networkd das Pendant zu nm-dispatcher für NetworkManager und den Skripten in /etc/network/if-*.d/ für ifupdown.

Arbeitsweise

Die beiden systemd-Units systemd-networkd.service und networkd-dispatcher.service müssen aktiv sein. Kontrolle[2]:

systemctl status systemd-networkd.service
systemctl status networkd-dispatcher.service 

Sobald systemd-networkd bei einer Schnittstelle einen Zustandswechsel erkennt, startet es networkd-dispatcher und dieser startet die Programme in dem Verzeichnis, welches zu dem neuen Zustand der Schnittstelle gehört. Dies funktioniert auch, wenn systemd-networkd die Schnittstelle nicht selber konfiguriert hat.

Installation

sudo apt-get install networkd-dispatcher

Aufruf

Optionen

Unix GNU Parameter Beschreibung

Parameter

Umgebungsvariablen

Exit-Status

Wert Beschreibung
0 Erfolg
>0 Fehler

Anwendung

Logger

Man kann dieses Skript als /etc/networkd-dispatcher/routable.d/00-logger ablegen, ausführbar machen und in den anderen Unterverzeichnissen von /etc/networkd-dispatcher/ jeweils darauf verlinken:

#! /bin/bash -e
LOG ()  { echo ${*:- } ;} >&2
LOG IFACE=$IFACE $OperationalState

Man erhält im Systemlog Meldungen, wann immer sich der Zustand einer Schnittstelle ändert. Das kann bei der Fehlerdiagnose helfen:

journalctl -b -u networkd-dispatcher.service 

Beispeilausgabe

Mai 04 10:01:29 networkd-dispatcher[95390]: IFACE=eth0 routable
Mai 04 10:04:37 networkd-dispatcher[95577]: IFACE=eth0 off
Mai 04 10:04:38 networkd-dispatcher[95580]: IFACE=WLAN routable

Konfiguration

Dateien

Datei Beschreibung


Anhang

Siehe auch



Dokumentation

Man-Page
  1. prep(1)


Links

Projekt

Weblinks

  1. Manpage zu networkd-dispatcher 🇬🇧 – bei Focal Fossa
  2. systemd
  3. systemd/networkd
  4. systemd/Units
  5. systemd/networkd-dispatcher


TMP

Konfiguration

networkd-dispatcher startet Programme in Unterverzeichnissen von

  • /etc/networkd-dispatcher
  • /usr/lib/networkd-dispatcher

Dabei überlagern Dateien unter /etc gleichnamige Dateien unter /usr. Man sollte eigene Dateien vorzugsweise unter /etc ablegen und /usr den Distributionen vorbehalten.

Es werden diese Unterverzeichnisse berücksichtigt

ls /etc/networkd-dispatcher/ 
carrier.d  degraded.d  dormant.d  no-carrier.d  off.d  routable.d 

Der Name des Unterverzeichnisses entspricht dem neuen Zustand der Schnittstelle


Zustände von Schnittstellen
Zustand Bedeutung
off Schnittstelle ist nicht betriebsbereit.
no-carrier Das Schnittstellen-Gerät ist betriebsbereit, aber es ist kein Transport auf Netzwerkebene L2 aktiv, z.B. weil bei Ethernet kein Kabel gesteckt ist oder bei WLAN keine Mitgliedschaft zu einem Funknetz besteht.
carrier Die Schnittstelle ist betriebsbereit und es können auf L2 Pakete empfangen und gesendet werden, jedoch können keine IP-Pakete ausgetauscht werden.
dormant Die Schnittstelle ist grundsätzlich betriebsbereit wie bei carrier, jedoch momentan untätig (eingeschlafen).
degraded IP-Pakete können über die Schnittstelle empfangen, jedoch nicht oder nur eingeschränkt gesendet werden, weil der Schnittstelle keine global weiterleitbare IP-Adresse zugeordnet wurde.
routeable IP-Pakete können über die Schnittstelle empfangen und gesendet werden.

Die Konfigurationsverzeichnisse müssen root gehören und niemand außer root darf in diese Ordner schreiben können.

Details zu den Skripten

Als Programm kann man beispielsweise eine ausführbare Textdatei mit einem Shell-Skript in das passende Verzeichnis legen, und dies ist auch als Regelfall so vorgesehen. Die Datei muss root gehören und niemand außer root darf sie beschreiben dürfen.

Die Programme werden mit diesen Umständen ausgeführt: # Sie werden als root ausgeführt.

  1. Bei mehreren Dateien in einem Verzeichnis kann man die Reihenfolge der Ausführung nicht steuern.
  2. Als Arbeitsverzeichnis ist die Wurzel des Dateibaums / gesetzt.
  3. Es gibt keine Argumente auf der „Kommandozeile“. "$0" ist der Dateiname.
  4. stdin ist geschlossen, stdout ist unbekannt und stderr schreibt in das Systemlog.
  5. Sie laufen in einer Programmumgebung mit diesen Variablen:
    vergrößern
    OperationalState=routable
    IP6_ADDRS=
    NOTIFY_SOCKET=/run/systemd/notify
    JOURNAL_STREAM=9:18243
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    INVOCATION_ID=e1ed182dc4f34afca8368e7a7f677da4
    LANG=de_DE.UTF-8
    AdministrativeState=unmanaged
    IP_ADDRS=
    networkd_dispatcher_args=--run-startup-triggers
    IFACE=radio
    PWD=/
    ADDR=
    STATE=routable
    Die Werte sind natürlich nur Beispiele. Man kann sich nicht darauf verlassen, dass alle Variablen mit vernünftigen Werten versehen sind und es gibt situationsabhängig noch weitere Umgebungsvariablen. Bei einer WLAN-Schnittstelle wurde z.B. die richtige SSID als ESSID übergeben.
  • Die wichtigste Variable ist IFACE. Hier steht, um welche Schnittstelle es sich handelt.
  • Die Variablen OperationalState und AdministrativeState entsprechen wohl (d.h. nach bisherigen Erfahrungen) den Ausgaben von networkctl.
  • Die Variable STATE entspricht wohl dem Verzeichnis bzw. dem neuen Zustand der Schnittstelle.