![如何通过 systemd 激活 NetworkManager 配置文件](https://linux22.com/image/1511962/%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87%20systemd%20%E6%BF%80%E6%B4%BB%20NetworkManager%20%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.png)
这是我正在尝试解决的问题:我有一个无线设备,我希望它在某个时刻充当客户端,在另一个时刻充当接入点。
我使用两个配置文件设置了 NetworkManager,一个用于客户端,一个用于接入点。只要我手动切换,一切就都正常。
当我尝试将这两个配置文件绑定到 systemd 单元时,问题就开始了。我希望能够将 NetworkManager 配置文件关联到 systemd 单元。我还使用简单的 nmcli 命令编写了该单元,但每当我启动该单元时,连接就会先建立,然后又断开。
单位如下:
[Service]
type=oneshot
ExecStart=nmcli con up Connection2
ExecStop=nmcli con down Connection2
以下是 journalctl 从该单元显示的内容:
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)
以下是 journalctl 从 NetworkManager 单元显示的内容(截断):
<info> Activation (wlan0) successful, device activated.
<info> (wlan0): device state change: activated -> deactivating (reason 'user-requested') [100 11
<info> NetworkManager state is now DISCONNECTING
<info> (wlan0): device state change: deactivating -> disconnected (reason 'user-requested') [110
<info> (wlan0): deactivating device (reason 'user-requested') [39]
<info> Removing DNS information from /sbin/resolvconf
<info> NetworkManager state is now DISCONNECTED
有人能告诉我正确的做法吗?另外,我想避免使用“ifupdown”方法,而使用 NetworkManager(或 systemd-networkd)。使用后者没有成功,因为我找不到设置设备模式的简单方法。谢谢。
答案1
单次触发单元通常需要RemainAfterExit=yes
,否则它们会立即“停用”并运行 ExecStop 命令。