Automate network configurations with dispatcher scripts
Debugging
Since NetworkManager runs in the background except for the configuration work, you cannot easily check your own dispatcher scripts for errors. If something goes wrong, don't expect a window with helpful error messages. If there is a bug in the script, simply nothing happens. To find programming errors, check out the system logs.
On the one hand, nmcli monitor
lets you trace what NetworkManager is doing in real time. You can see the network device names and what actions are currently running. To view the NetworkManager logs, you need to read the system journal with journalctl
. The following command:
journalctl -f -u NetworkManager
lets you have a look at the log in real time and filter the output from NetworkManager (Listing 9).
Listing 9
journalctl
$ journalctl -f -u NetworkManager [...] May 22 23:21:45 ontario NetworkManager[485]: <warn> [1590182505.2987] dispatcher: (44) /etc/NetworkManager/dispatcher.d/30-mount-diskstation failed (failed): Script '/etc/NetworkManager/dispatcher.d/30-mount-diskstation' exited with error status 2. $ nmcli monitor enp0s31f6: Connection "LAN1" is used enp0s31f6: is connected (being prepared) NetworkManager is now in the state "being connected [...] NetworkManager is now in "connected" state Connection state is now "complete
These commands give you a general overview of NetworkManager's actions. However, in order to search for an error, it is recommended that you send content to the systemd log yourself at critical points using logger
. For an example, as shown in Listing 10, you can use the $0
(script name), $1
(network device), and $2
(action) variables also used by NetworkManager for dispatching, as well as the environment variables provided by the dispatcher function, such as $CONNECTION_UUUID
or $IP4_DOMAINS
(Listing 11).
Listing 10
Logging
#!/bin/bash logger "Logger: Run script $0." if [ "$2" = "up" ]; then logger "LOGGER: network device: $1, action: $2" logger "LOGGER: Environment: CONNECTION_UUUID=$CONNECTION_UUID, IP4_DOMAINS=$IP4_DOMAINS" fi
Listing 11
grepping the Log
$ journalctl -f | grep LOGGER [...] May 22 23:36:47 root [16135]: LOGGER: Run script /etc/NetworkManager/dispatcher.d/30-mount-diskstation May 22 23:36:47 root [16136]: LOGGER: network device: enp0s31f6, action: up May 22 23:50:31 oroot[18811]: LOGGER: Environment: CONNECTION_UUUID=2911db45-3eff-3b74-9c87-4c36e0290693, IP4_DOMAINS=fritz.box
Conclusion
A meaningful dispatcher script will not automatically write itself. It takes some time to get everything working as desired. But once you work through all the details, you can get a dispatcher script to do almost anything you can do on the system at the file level. The biggest difficulty is extracting log output or viewing the environment variables populated during dispatching. But if you know the tricks, you can quickly overcome these hurdles.
Infos
« Previous 1 2
Buy this article as PDF
(incl. VAT)
Buy Linux Magazine
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters
Support Our Work
Linux Magazine content is made possible with support from readers like you. Please consider contributing when you’ve found an article to be beneficial.
News
-
SUSE Renames Several Products for Better Name Recognition
SUSE has been a very powerful player in the European market, but it knows it must branch out to gain serious traction. Will a name change do the trick?
-
ESET Discovers New Linux Malware
WolfsBane is an all-in-one malware that has hit the Linux operating system and includes a dropper, a launcher, and a backdoor.
-
New Linux Kernel Patch Allows Forcing a CPU Mitigation
Even when CPU mitigations can consume precious CPU cycles, it might not be a bad idea to allow users to enable them, even if your machine isn't vulnerable.
-
Red Hat Enterprise Linux 9.5 Released
Notify your friends, loved ones, and colleagues that the latest version of RHEL is available with plenty of enhancements.
-
Linux Sees Massive Performance Increase from a Single Line of Code
With one line of code, Intel was able to increase the performance of the Linux kernel by 4,000 percent.
-
Fedora KDE Approved as an Official Spin
If you prefer the Plasma desktop environment and the Fedora distribution, you're in luck because there's now an official spin that is listed on the same level as the Fedora Workstation edition.
-
New Steam Client Ups the Ante for Linux
The latest release from Steam has some pretty cool tricks up its sleeve.
-
Gnome OS Transitioning Toward a General-Purpose Distro
If you're looking for the perfectly vanilla take on the Gnome desktop, Gnome OS might be for you.
-
Fedora 41 Released with New Features
If you're a Fedora fan or just looking for a Linux distribution to help you migrate from Windows, Fedora 41 might be just the ticket.
-
AlmaLinux OS Kitten 10 Gives Power Users a Sneak Preview
If you're looking to kick the tires of AlmaLinux's upstream version, the developers have a purrfect solution.