web-dev-qa-db-ja.com

DBusを介したNetwork Managerの構成:アドホックモードの設定方法

割れにくいハードナッツがあります:ソルバーへのイタリアンキャンティワインの素敵なボトル! :)

WiFiを自動的に構成するには、まずネットワークマネージャーを強制終了してから、コマンドラインでWiFiをアクティブにする必要があります。これはすべてアプリケーションで自動的に行い、正常に動作します。

ただし、これは正しい方法ではありません。ユーザーには他のネットワークアクセスを構成するためのネットワークGUIがもうないため。より優れた透過的な方法は、DBusインターフェースを介してNetwork Managerを介してWiFiを直接構成することです。構成することはできましたが、アドホックモードに設定することはできませんでした。

しばらくウェブを検索する:一般的な設定についてはたくさんありますが、アドホックモードとは関係ありません。

それを理解する唯一の方法は、ネットワークマネージャーのソースコードを調べることだと思います...おそらく誰かが既にそれをやっていて、彼が答えられるかもしれません。

6
Andrea

ブックマーク:
DBusを介したNetwork Managerの設定:アドホックモードの設定方法

iwconfigを使用して「コマンドラインからwifiをアクティブ化する」場合、mode Ad-Hocを作成できます。

man iwconfigからの引用

Example :  
                   iwconfig eth0 mode Managed        <-- often wlan0 not the0
                   iwconfig eth0 mode Ad-Hoc                  Freudian ... eth0

一般的に、レベルが低く、深くなればなるほど、労力がより手作業に集中し、自動化とコンピューターの概念と理論的根拠をすべて打ち破ります。

ただし、DBusを使用するための「最も簡単な」方法は、D-FeetのGUIまたはqdbusを使用することです。これは here であり、以下で使用します。引数タイプは、qdbusで、一致するgdbusコマンドまたはD-Feetが必要になる場合があります。

必要なメソッドの正しい引数値を取得するには、上記のiwconfigの影響、または以下を使用して動作するGUIネットワークマネージャーを観察します。

dbus-monitor --system "interface='org.freedesktop.NetworkManager'"

アドホックとインフラストラクチャの間でモードパラメータを変更します。これにより、DBusで直接設定するために必要な手がかりが得られます。
副<文>この[前述の事実の]結果として、それ故に、従って、だから◆【同】consequently; therefore <文>このような方法で、このようにして、こんなふうに、上に述べたように◆【同】in this manner <文>そのような程度まで<文> AひいてはB◆【用法】A and thus B <文>例えば◆【同】for example; as an example、

qdbus --system --literal  org.freedesktop.NetworkManager

リスト

/
/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

そして

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'

modeboldのワイヤレスプロパティを指定します。

 [引数:a {sv} {"HwAddress" = [Variant(QString): "74:F0:6D:4B:8E:9B"]、
 "PermHwAddress" = [Variant( QString): "74:F0:6D:4B:8E:9B"]、
「モード」= [Variant(uint):2]、
 "ビットレート" = [Variant(uint):28900]、
 "ActiveAccessPoint" = [Variant:[ObjectPath:/org/freedesktop/NetworkManager/AccessPoint/1395]],
 "WirelessCapabilities" = [Variant(uint):127]}] 

boldの関連するmethods

qdbus --system --literal org.freedesktop.NetworkManager /org/freedesktop/NetworkManager

 method QString org.freedesktop.DBus.Introspectable.Introspect()
 method QVariantMap org.freedesktop.DBus.Properties.GetAll(QString interface)
 method QDBusVariant org.freedesktop.DBus .Properties.Get(QStringインターフェイス、QString propname)
メソッドvoid org.freedesktop.DBus.Properties.Set(QStringインターフェイス、QString propname、QDBusVariant値)メソッドQDBusObjectPath org.freedesktop.NetworkManager.ActivateConnection(QDBusObjectPath接続、QDBusObjectPathデバイス、QDBusObjectPath specific_object)メソッドQDBusObjectPath org.freedesktop.NetworkManager.AddAndActivateConnection(QDBusRawType :: a {sa {sv}}接続、QDBusObjectPathデバイス、QDBusObjectPath specific_object、QDBusObjectPath&active_connection)
 method void org.freedesktop.NetworkManager.DeactivateConnection(QDBusObjectPath active_connection)
メソッドvoid org.freedesktop.NetworkManager.Enable(bool enable)
 method QDBusObjectPath org.freedesktop.NetworkManager.GetDeviceByIpIface(QString iface)
 method QList org.freedesktop.NetworkManager.GetDevices()
 method QDBusRawType :: a {ss} org.freedesktop .NetworkManager.GetPermissions()
 method void org.freedesktop.NetworkManager.SetLogging(QStringレベル、QStringドメイン)
 method void org.freedesktop.NetworkManager.Sleep(bool sleep)
メソッドuint org.freedesktop.NetworkManager.state()
 property read bool org.freedesktop.NetworkManager.NetworkingEnabled 
 property readwrite bool org.freedesktop.NetworkManager.WimaxEnabled 
 property read bool org .freedesktop.NetworkManager.WimaxHardwareEnabled 
 property readwrite bool org.freedesktop.NetworkManager.WirelessEnabled 
 property read bool org.freedesktop.NetworkManager.WirelessHardwareEnabled 
 property readwrite bool org.freedesktop.NetworkManager。 WwanEnabled 
 property read bool org.freedesktop.Net workManager.WwanHardwareEnabled 
 property read QList org.freedesktop.NetworkManager.ActiveConnections 
 property read QString org.freedesktop.NetworkManager.Version 
 property read uint org.freedesktop.NetworkManager.State 
 signal void org.freedesktop.NetworkManager.CheckPermissions()
 signal void org.freedesktop.NetworkManager.DeviceAdded(QDBusObjectPath)
 signal void org.freedesktop.NetworkManager.DeviceRemoved(QDBusObjectPath)
 signal void org.freedesktop.NetworkManager.PropertiesChanged(QVariantMap)
 signal void org.freedesktop.NetworkManager.StateChanged(uint)

との

qdbus --system --literal org.freedesktop.NetworkManager /org/freedesktop/NetworkManager/Devices/1

 method QString org.freedesktop.DBus.Introspectable.Introspect()
メソッドQVariantMap org.freedesktop.DBus.Properties.GetAll(QString interface)
 method QDBusVariant org.freedesktop.DBus.Properties.Get(QString interface、QString propname)
メソッドvoid org.freedesktop.DBus.Properties.Set(QStringインターフェイス、QString propname、QDBusVariant値)
 method void org.freedesktop.NetworkManager.Device.Disconnect()
メソッドQList <QDBusObjectPath> org.freedesktop.NetworkManager.Device.Wireless.GetAccessPoints()
 property read bool org.freedesktop.NetworkManager.Device.FirmwareMissing 
 property read bool org.freedesktop.NetworkManager.Device.Managed 
 property read QDBusObjectPath org.freedesktop.NetworkManager.Device。 ActiveConnection 
 property read QDBusObjectPath org.freedesktop.NetworkManager.Device.Dhcp4Config 
 property read QDBusObjectPath org.freedesktop.NetworkManager.Device.Dhcp6Config 
 property read QDBusObjectPath org.freedesktop.NetworkManager.Device .Ip4Config 
 property read QDBusObjectPath org.freedesktop.NetworkManager.Device.Ip6Config 
 property read QDBusRawType::( uu)org.freedesktop.NetworkManager.Device.StateReason 
 property read QString org .freedesktop.NetworkManager.Device.Driver 
 property read QString org.freedesktop.NetworkManager.Device.Interface 
 property read QString org.freedesktop.NetworkManager.Device.IpInterface 
 property read QString org.free desktop.NetworkManager.Device.Udi 
 property read uint org.freedesktop.NetworkManager.Device.Capabilities 
 property read uint org.freedesktop.NetworkManager.Device.DeviceType 
 property read uint org .freedesktop.NetworkManager.Device.Ip4Address 
 property read uint org.freedesktop.NetworkManager.Device.State 
 property read QDBusObjectPath org.freedesktop.NetworkManager.Device.Wireless.ActiveAccessPoint 
 property read QString org.freedesktop.NetworkManager.Device.Wireless.HwAddress 
 property read QString org.freedesktop.NetworkManager.Device.Wireless.PermHwAddress 
 property read uint org.freedesktop.NetworkManager.Device.Wireless。ビットレート
プロパティ読み取りuint org.freedesktop.NetworkManager.Device.Wireless.Mode
 property read uint org.freedesktop.NetworkManager.Device.Wireless.WirelessCapabilities 
 signal void org.freedesktop.NetworkManager.Device.StateChanged(uint、uint、uint)
 signal void org .freedesktop.NetworkManager.Device.Wireless.AccessPointAdded(QDBusObjectPath)
 signal void org.freedesktop.NetworkManager.Device.Wireless.AccessPointRemoved(QDBusObjectPath)
 signal void org.freedesktop.NetworkManager.Device.Wireless .PropertiesChanged(QVariantMap)
7
george rowell

私は最近それをしなければなりませんでした。アドホックネットワークをセットアップして接続するためのCコード(libdbus-1のみに依存)を次に示します。

2
andy