Systemd/networkd/dispatcher: Difference between revisions
imported>Onny mNo edit summary |
|||
(6 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
{{Systemd/breadcrumb}} | |||
[https://gitlab.com/craftyguy/networkd-dispatcher Networkd-dispatcher] is a dispatcher service for systemd-networkd connection status changes. This daemon is similar to NetworkManager-dispatcher, but is much more limited in the types of events it supports due to the limited nature of systemd-networkd. | [https://gitlab.com/craftyguy/networkd-dispatcher Networkd-dispatcher] is a dispatcher service for systemd-networkd connection status changes. This daemon is similar to NetworkManager-dispatcher, but is much more limited in the types of events it supports due to the limited nature of systemd-networkd. | ||
== Usage == | |||
The following example triggers a script every time the networkd state <code>routable</code> or <code>off</code> is reached. This is the case when you connect to a new network or quit an existing connection as with [[OpenVPN]]. An additional check ensures that the affected interface corresponds to <code>wlan0</code> and that the uplink is <code>configured</code>. After that the [[Tor]] daemon gets restarted. | |||
<syntaxhighlight lang="nix"> | <syntaxhighlight lang="nix"> | ||
services.networkd-dispatcher | services.networkd-dispatcher = { | ||
enable = true; | |||
rules."restart-tor" = { | |||
onState = ["routable" "off"]; | |||
script = '' | |||
#!${pkgs.runtimeShell} | |||
if [[ $IFACE == "wlan0" && $AdministrativeState == "configured" ]]; then | |||
{ | echo "Restarting Tor ..." | ||
systemctl restart tor | |||
if [[ $IFACE == "wlan0" && $AdministrativeState == "configured" ]]; then | fi | ||
exit 0 | |||
fi | ''; | ||
exit 0 | }; | ||
}; | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Please refer [https://gitlab.com/craftyguy/networkd-dispatcher upstream documentation] for | Please refer [https://gitlab.com/craftyguy/networkd-dispatcher upstream documentation] for available states and additional examples. | ||
[[Category:Networking]] | [[Category:Networking]] | ||
[[Category:systemd]] |
Latest revision as of 21:33, 24 April 2024
Networkd-dispatcher is a dispatcher service for systemd-networkd connection status changes. This daemon is similar to NetworkManager-dispatcher, but is much more limited in the types of events it supports due to the limited nature of systemd-networkd.
Usage
The following example triggers a script every time the networkd state routable
or off
is reached. This is the case when you connect to a new network or quit an existing connection as with OpenVPN. An additional check ensures that the affected interface corresponds to wlan0
and that the uplink is configured
. After that the Tor daemon gets restarted.
services.networkd-dispatcher = {
enable = true;
rules."restart-tor" = {
onState = ["routable" "off"];
script = ''
#!${pkgs.runtimeShell}
if [[ $IFACE == "wlan0" && $AdministrativeState == "configured" ]]; then
echo "Restarting Tor ..."
systemctl restart tor
fi
exit 0
'';
};
};
Please refer upstream documentation for available states and additional examples.