java - 如何使用 dbus 和 NetworkManager 激活连接

标签 java dbus networkmanager

根据我之前的 SO 问题,我仍在致力于通过 dbus 从 Java 应用程序控制 NetworkManager。我想激活现有的无线连接,所以这是我的代码,尽可能去除不相关的内容:

DBusInterface iface = ...;
var nmIface = (NetworkManagerIface) instance.getRemoteObject(NetworkManagerIface._NM_IFACE, NetworkManagerIface._NM_PATH, NetworkManagerIface.class);
System.out.println("Attempting connection to " + iface.getObjectPath());
var result = nmIface.ActivateConnection(new DBusPath(iface.getObjectPath()), new DBusPath("/"), new DBusPath("/"));
System.out.println("Activate Connection " + result.getPath());

其中NetworkManagerIfacehere 。 运行正常并打印:

Attempting connection to /org/freedesktop/NetworkManager/Settings/4
Activate Connection /org/freedesktop/NetworkManager/ActiveConnection/4

所以看起来对 ActivateConnection 的调用有效,因为它返回了一些合理的内容。但是,命令 nmcli c show 将连接显示为正在使用。

NetworkManager 在我们的系统中拥有八个连接:

# dbus-send --system --print-reply --dest=org.freedesktop.NetworkManager /org/freedesktop/NetworkManager/Settings org.freedesktop.DBus.Properties.Get string:org.freedesktop.NetworkManager.Settings string:Connections
method return time=1575940954.061910 sender=:1.8 -> destination=:1.70 serial=9361 reply_serial=2
   variant       array [
         object path "/org/freedesktop/NetworkManager/Settings/2"
         object path "/org/freedesktop/NetworkManager/Settings/7"
         object path "/org/freedesktop/NetworkManager/Settings/3"
         object path "/org/freedesktop/NetworkManager/Settings/5"
         object path "/org/freedesktop/NetworkManager/Settings/4"
         object path "/org/freedesktop/NetworkManager/Settings/8"
         object path "/org/freedesktop/NetworkManager/Settings/1"
         object path "/org/freedesktop/NetworkManager/Settings/6"
      ]

现有连接是有线(以太网)连接,我想添加无线连接。为什么我的 ActivateConnection 调用没有执行此操作?

最佳答案

如果 ActivateConnection 调用返回成功,但此后配置文件并未实际激活/激活,那么按理说激活不久后就会失败。

查看 NetworkManager 的日志文件以了解激活失败的原因。可能启用 level=TRACE 日志记录,请参阅 https://cgit.freedesktop.org/NetworkManager/NetworkManager/tree/contrib/fedora/rpm/NetworkManager.conf#n28有关日志记录的提示。

您还可以在另一个终端中运行 nmcli Monitor,以了解发生了什么。

The existing connection is the wired (ethernet) connection and I want to add a wireless connection

您想添加连接配置文件吗?这不是 ActivateConnection 所做的。一般请参阅 AddConnection 和 D-Bus API:https://developer.gnome.org/NetworkManager/stable/spec.html

Why doesn't my ActivateConnection call do this?

抱歉,我听不懂。做什么?

关于java - 如何使用 dbus 和 NetworkManager 激活连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59258931/

相关文章:

c++ - Qt DBUS NetworkManager 从 IP4Config 接口(interface)获取地址

java - 对齐 JTextArea 中由空格组成的字符串中的列

java - GWT:如何创建自己的异步方法?

java - 如何处理同一 Activity 的多个 Intent ?

glib - 如何将 glib 信号回调附加到特定线程上下文

c++ - DBus与其他进程间通信方式的区别

c++ - GDBus 自省(introspection) xml 中的多个完整类型

dns - 阻止网络管理器更新 resolv.conf

java - Android org.ksoap2.serialization.SoapObject 类未找到

ubuntu - 如何向网络管理器管理的 Ubuntu 添加持久静态路由?