
Ich möchte ein Skript debuggen, das Networkmanager-Dispatcher-Variablen wie DEVICE_IFACE, IP4_GATEWAY enthält.Netzwerkmanager-Handbuchbeschreibt diese Variablen, erwähnt aber nicht, wie man sie debuggt.
Ich habe viel gesucht, aber ich kann nicht herausfinden, wie ich den Wert dieser Variablen erhalte. Wenn ich in der Befehlszeile echoe, beispielsweise echo ${DEVICE_IFACE}, erhalte ich keinen Wert.
Antwort1
In der NetworkManager
Handbuchseite, auf die Sie sich beziehen, steht:
Die Umgebung enthält weitere Informationen über die Schnittstelle und die Verbindung. Für die Verwendung in den Dispatcher-Skripten stehen folgende Variablen zur Verfügung:
[...]
DEVICE_IFACE
Diese Umgebung wird also offensichtlich von dispatcher.d eingerichtet und ist nur für von dort gestartete Skripte zugänglich.
Sie könnten beispielsweise diese Zeile in eine Datei in einfügen /etc/NetworkManager/dispatcher.d
:
echo "interface $DEVICE_IFACE" > /tmp/myscript.log
Beziehen Sie sich weiterhin auf die Manualpage von NetworkManager
. Sie müssen dafür sorgen, dass es root gehört, ausführbar ist und von der Gruppe oder anderen nicht beschreibbar ist, zum Beispiel:
# chown root:root /etc/NetworkManager/dispatcher.d/myscript
# chmod a+x /etc/NetworkManager/dispatcher.d/myscript
# chmod go-w /etc/NetworkManager/dispatcher.d/myscript
Wenn Sie NetworkManager dann neu starten, sollte darin etwas wie „Schnittstelle wlan0“ stehen /tmp/myscript.log
.
Antwort2
Die Ausgabe der Dispatcher-Skripte wird von systemd protokolliert; Sie können sie mit anzeigen sudo journalctl -u NetworkManager-dispatcher
. Geben Sie also einfach die Variablen aus und sehen Sie sich dann das Protokoll an.
Eine ähnliche Antwort auf eine ähnliche Frage finden Sie unterhttps://serverfault.com/a/1056299/310447