我想调试一个包含 Networkmanager-dispacher-variables(如 DEVICE_IFACE、IP4_GATEWAY)的脚本。这网络管理器手册描述了这些变量,但没有提及如何调试它们。
我搜索了很多,但我无法弄清楚如何获取这些变量的值。当我在命令行上回显时(例如 echo ${DEVICE_IFACE}),我没有得到任何值。
答案1
在NetworkManager
您参考的手册页中,有说明:
环境包含有关接口和连接的更多信息。以下变量可在调度程序脚本中使用:
[...]
DEVICE_IFACE
所以这个环境显然是由dispatcher.d 设置的,并且只能由从那里启动的脚本访问。
例如,您可以将此行放入以下文件中/etc/NetworkManager/dispatcher.d
:
echo "interface $DEVICE_IFACE" > /tmp/myscript.log
仍然参考 的手册页NetworkManager
,您需要使其由 root 拥有、可执行,并且不可被组或其他人写入,例如:
# chown root:root /etc/NetworkManager/dispatcher.d/myscript
# chmod a+x /etc/NetworkManager/dispatcher.d/myscript
# chmod go-w /etc/NetworkManager/dispatcher.d/myscript
然后,重新启动 NetworkManager,您应该在 .txt 文件中读取类似“interface wlan0”的内容/tmp/myscript.log
。
答案2
调度程序脚本的输出由 systemd 记录;您可以使用 来查看它sudo journalctl -u NetworkManager-dispatcher
。所以只需回显变量,然后查看日志即可。
类似问题的类似答案可以在以下位置找到https://serverfault.com/a/1056299/310447