在网络管理器的直接 dbus 控制中模拟 nmcli --ask
Posted
技术标签:
【中文标题】在网络管理器的直接 dbus 控制中模拟 nmcli --ask【英文标题】:simulating nmcli --ask in direct dbus control of networkmanager 【发布时间】:2020-03-14 08:59:24 【问题描述】:我正在研究一个 Java 软件产品,并用通过 dbus 更直接地控制 NetworkManager 来替换对 nmcli 的 exec()
调用。我被困在nmcli connection up (ourconnection) --ask
;具体来说,它的--ask
位。
我知道这将是对 ActivateConnection 的调用,如NetworkManager documentation 中所述,但看不到如何模拟--ask
。当您指定 --ask
时,是 NetworkManager 采用并执行的选项,还是 nmcli
在将密码传递给 NetworkManager 之前要求输入密码?
这个问题专门针对--ask
;我大体上了解如何使用从反射 API 调用获得的 Java 类通过 dbus 与 NetworkManager 进行交互,并且一直在这样做以获取 SSID、设备和连接的列表,以及为诸如 之类的信号设置处理程序接入点添加;但我不知道如何以编程方式告诉 NetworkManager 提示人类用户输入密码。
【问题讨论】:
在使用nmcli --ask
与不使用 --ask
时尝试使用 Bustle (gitlab.freedesktop.org/bustle/bustle) 捕获 D-Bus 流量,看看有什么不同。
【参考方案1】:
由于其他原因,我不得不深入到nmcli
的source code,发现密码是由nmcli
请求并通过dbus传递的。
【讨论】:
以上是关于在网络管理器的直接 dbus 控制中模拟 nmcli --ask的主要内容,如果未能解决你的问题,请参考以下文章
在linux中网络管理器的接口“org.freedesktop.NetworkManager.Device”上生成的信号名称