And*_*rea 6 configuration network-manager wireless dbus adhoc
我有一个难以破解的难题:给求解器的一瓶漂亮的意大利基安蒂葡萄酒!:)
要自动配置 WiFi,我首先必须关闭网络管理器,然后通过命令行激活 WiFi:我在我的应用程序中自动完成了这一切,并且效果很好。
但是,这不是执行此操作的正确方法。由于用户不再有网络 GUI 来配置一些其他网络访问。一种更好和透明的方法是通过 DBus 接口上的网络管理器直接配置 WiFi。我能够对其进行配置,但无法将其设置为临时模式。
在网上搜索了一段时间:很多关于一般配置的信息,但与 ad hoc 模式无关。
我认为解决这个问题的唯一方法是查看网络管理器的源代码......也许有人已经这样做了,他可以回答。
书签:
通过 DBus 配置网络管理器:如何设置 ad hoc 模式
如果使用iwconfig“通过命令行激活 wifi”,那么它可以使mode Ad-Hoc.
引用自 man iwconfig
Example :
iwconfig eth0 mode Managed <-- often wlan0 not the0
iwconfig eth0 mode Ad-Hoc Freudian ... eth0
Run Code Online (Sandbox Code Playgroud)
一般来说,越是低级越深,人工劳动强度越大,这违背了自动化和计算机的整个概念和基本原理。
然而,要使用的DBus的“最简单”的方式可能是与D-Feet的GUI或qdbus如所描述的此处和下文..注意,参数类型在命令行输入限于方法中使用qdbus,因此匹配gdbus命令或D-Feet也许需要的。
要获得所需方法的正确参数值,请观察iwconfig,如上,或工作的 GUI 网络管理器的影响:
dbus-monitor --system "interface='org.freedesktop.NetworkManager'"
Run Code Online (Sandbox Code Playgroud)
同时更改 Ad Hoc 和 Infrastructure 之间的模式参数。这将为直接在 DBus 上进行配置提供必要的线索。
因此,
qdbus --system --literal org.freedesktop.NetworkManager
Run Code Online (Sandbox Code Playgroud)
列表
/
/org
/org/freedesktop
/org/freedesktop/NetworkManager
/org/freedesktop/NetworkManager/AccessPoint
/org/freedesktop/NetworkManager/AccessPoint/1385
...
/org/freedesktop/NetworkManager/ActiveConnection
/org/freedesktop/NetworkManager/ActiveConnection/58
/org/freedesktop/NetworkManager/AgentManager
/org/freedesktop/NetworkManager/DHCP4Config
/org/freedesktop/NetworkManager/DHCP4Config/45
/org/freedesktop/NetworkManager/Devices
/org/freedesktop/NetworkManager/Devices/0
/org/freedesktop/NetworkManager/Devices/1 <- my wireless device
/org/freedesktop/NetworkManager/IP4Config
/org/freedesktop/NetworkManager/IP4Config/44
/org/freedesktop/NetworkManager/Settings
/org/freedesktop/NetworkManager/Settings/0
/org/freedesktop/NetworkManager/Settings/1
...
/org/freedesktop/NetworkManager/Settings/5
/org/freedesktop/NetworkManager/Settings/6
Run Code Online (Sandbox Code Playgroud)
和
qdbus --system --literal org.freedesktop.NetworkManager \
/org/freedesktop/NetworkManager/Devices/1 \
org.freedesktop.DBus.Properties.GetAll \
org.freedesktop.NetworkManager.Device.Wireless \
| sed -e 's/, "/,\n"/g'
Run Code Online (Sandbox Code Playgroud)
以粗体给出模式的无线属性:
[参数:a{sv} {"HwAddress" = [Variant(QString): "74:F0:6D:4B:8E:9B"],
"PermHwAddress" = [Variant(QString): "74:F0:6D:4B:8E:9B"],
"模式" = [变体(uint): 2],
“比特率”= [变体(uint):28900],
"ActiveAccessPoint" = [变体: [ObjectPath: /org/freedesktop/NetworkManager/AccessPoint/1395]],
"WirelessCapabilities" = [Variant(uint): 127]}]
相关方法在大胆的
qdbus --system --literal org.freedesktop.NetworkManager /org/freedesktop/NetworkManager
Run Code Online (Sandbox Code Playgroud)
是
方法 QString org.freedesktop.DBus.Introspectable.Introspect()
方法 QVariantMap org.freedesktop.DBus.Properties.GetAll(QString 接口)
方法 QDBusVariant org.freedesktop.DBus.Properties.Get(QString interface, QString propname)
method void org.freedesktop.DBus.Properties.Set(QString interface, QString propname, QDBusVariant value)
method QDBusObjectPath org.freedesktop.NetworkManager.ActivateConnection(QDBusObjectPath connection, QDBusObjectPath device, QDBusObjectPath specific_object)
method QDBusObjectPath org.freedeskAddActivateConnection( NetworkManager.) QDBusRawType::a{sa{sv}} 连接、QDBusObjectPath 设备、QDBusObjectPath specific_object、QDBusObjectPath&active_connection)
方法无效 org.freedesktop.NetworkManager.DeactivateConnection(QDBusObjectPath active_connection)
方法 void org.freedesktop.NetworkManager.Enable(bool enable)
方法 QDBusObjectPath org.freedesktop.NetworkManager.GetDeviceByIpIface(QString iface)
方法 QList org.freedesktop.NetworkManager.GetDevices()
方法 QDBusRawType::a{ss} org.freedesktop.NetworkManager.GetPermissions()
方法 void org.freedesktop.NetworkManager.SetLogging(QString 级别,QString 域)
方法无效 org.freedesktop.NetworkManager.Sleep(bool sleep)
方法 uint org.freedesktop.NetworkManager.state()
属性读取 bool org.freedesktop.NetworkManager.NetworkingEnabled
属性 readwrite bool org.freedesktop.NetworkManager.WimaxEnabled
属性读取 bool org.freedesktop.NetworkManager.WimaxHardwareEnabled
属性 readwrite bool org.freedesktop.NetworkManager.WirelessEnabled
属性读取 bool org.freedesktop.NetworkManager.WirelessHardwareEnabled
属性 readwrite bool org.freedesktop.NetworkManager.WwanEnabled
属性读取 bool org.freedesktop.NetworkManager.WwanHardwareEnabled
属性读取 QList org.freedesktop.NetworkManager.ActiveConnections
属性读取 QString org.freedesktop.NetworkManager.Version
属性读取 uint org.freedesktop.NetworkManager.State
信号无效 org.freedesktop.NetworkManager.CheckPermissions()
信号无效 org.freedesktop.NetworkManager.DeviceAdded(QDBusObjectPath)
信号无效 org.freedesktop.NetworkManager.DeviceRemoved(QDBusObjectPath)
信号无效 org.freedesktop.NetworkManager.PropertiesChanged(QVariantMap)
信号无效 org.freedesktop.NetworkManager.StateChanged(uint)
和
qdbus --system --literal org.freedesktop.NetworkManager /org/freedesktop/NetworkManager/Devices/1
Run Code Online (Sandbox Code Playgroud)
是
方法 QString org.freedesktop.DBus.Introspectable.Introspect() 方法 QVariantMap org.freedesktop.DBus.Properties.GetAll(QString 接口) 方法 QDBusVariant org.freedesktop.DBus.Properties.Get(QString interface, QString propname) 方法 void org.freedesktop.DBus.Properties.Set(QString interface, QString propname, QDBusVariant value) 方法无效 org.freedesktop.NetworkManager.Device.Disconnect() 方法 QList<QDBusObjectPath> org.freedesktop.NetworkManager.Device.Wireless.GetAccessPoints() 属性读取 bool org.freedesktop.NetworkManager.Device.FirmwareMissing 属性读取 bool org.freedesktop.NetworkManager.Device.Managed 属性读取 QDBusObjectPath org.freedesktop.NetworkManager.Device.ActiveConnection 属性读取 QDBusObjectPath org.freedesktop.NetworkManager.Device.Dhcp4Config 属性读取 QDBusObjectPath org.freedesktop.NetworkManager.Device.Dhcp6Config 属性读取 QDBusObjectPath org.freedesktop.NetworkManager.Device.Ip4Config 属性读取 QDBusObjectPath org.freedesktop.NetworkManager.Device.Ip6Config 属性读取 QDBusRawType::(uu) org.freedesktop.NetworkManager.Device.StateReason 属性读取 QString org.freedesktop.NetworkManager.Device.Driver 属性读取 QString org.freedesktop.NetworkManager.Device.Interface 属性读取 QString org.freedesktop.NetworkManager.Device.IpInterface 属性读取 QString org.freedesktop.NetworkManager.Device.Udi 属性读取 uint org.freedesktop.NetworkManager.Device.Capabilities 属性读取 uint org.freedesktop.NetworkManager.Device.DeviceType 属性读取 uint org.freedesktop.NetworkManager.Device.Ip4Address 属性读取 uint org.freedesktop.NetworkManager.Device.State 属性读取 QDBusObjectPath org.freedesktop.NetworkManager.Device.Wireless.ActiveAccessPoint 属性读取 QString org.freedesktop.NetworkManager.Device.Wireless.HwAddress 属性读取 QString org.freedesktop.NetworkManager.Device.Wireless.PermHwAddress 属性读取 uint org.freedesktop.NetworkManager.Device.Wireless.Bitrate 属性读取 uint org.freedesktop.NetworkManager.Device.Wireless.Mode 属性读取 uint org.freedesktop.NetworkManager.Device.Wireless.WirelessCapabilities 信号无效 org.freedesktop.NetworkManager.Device.StateChanged(uint, uint, uint) 信号无效 org.freedesktop.NetworkManager.Device.Wireless.AccessPointAdded(QDBusObjectPath) 信号无效 org.freedesktop.NetworkManager.Device.Wireless.AccessPointRemoved(QDBusObjectPath) 信号无效 org.freedesktop.NetworkManager.Device.Wireless.PropertiesChanged(QVariantMap)
| 归档时间: |
|
| 查看次数: |
10050 次 |
| 最近记录: |