#execute-command #automation #system #systemd #networking #utility #linux

app network-manager-connection-action

使用DBus网络管理器事件在连接变化时执行命令

5个稳定版本

1.3.1 2023年7月26日
1.3.0 2022年6月25日
1.2.1 2022年1月14日
1.2.0 2021年9月16日
1.1.0 2021年9月16日

#360Unix API

每月 28次下载

BSD-2-Clause

18KB
281 代码行

network-manager-connection-action Crates.io

使用网络管理器的dbus接口监听连接/断开连接,并执行指定命令,无需root权限

用例

一个可能的用例是在连接公司VPN时为公司域名添加自动ssh规范,这种用法可以在example目录中找到。

示例运行

配置为在VPN连接上运行规范并在NetworkManager连接/断开连接时的输出

<user>$ network-manager-connection-action -c example/config.toml
[2021-05-02T13:51:45Z INFO] Watching for NetworkManager events
[2021-05-02T13:53:41Z INFO] Entreprise VPN Up
CanonicalDomains public.entreprise.com internal.entreprise.com anotherdomains.fromvpn
[2021-05-02T13:56:21Z INFO] Entreprise VPN Down
CanonicalDomains public.entreprise.com

构建和安装

cargo build --release
cp target/release/network-manager-connection-action /usr/bin/network-manager-connection-action

配置

您需要要监视网络的UUID

您可以使用nmcli c找到连接的UUID

创建一个配置文件,例如$HOME/.config/network_manager_connection_actionrc

配置包含与现有连接相对应的网络管理器UUID。

对于每个连接的配置,您可以选择一个命令和上下文,请参阅示例

Systemd自动启动

将单元文件放在这里

$HOME/.config/systemd/user/network-manager-connection-action.service

运行并启用

systemctl --user daemon-reload
systemctl --user start network-manager-connection-action.service
systemctl --user enable network-manager-connection-action.service
journalctl --user -fu network-manager-connection-action.service

未来

使用systemd varlink接口

在启动时,程序可以查询已连接的连接并应用配置

代码和功能可以从许多方面进行改进,请随时提交合并请求:)

依赖项

~12–23MB
~323K SLoC