通过 dbus 接口使用 wpa_supplicant 创建访问点
Creating an access point with wpa_supplicant via dbus interface
有人告诉我可以通过 wpa_supplicant 通过其 dbus 接口创建一个访问点。我用 google 找到的所有内容是 this forum thread,尽管标题完全相同,但对我来说并没有太多信息。
是否可以通过 wpa_supplicant dbus 接口执行此操作?创建具有自定义参数(如频率等)的接口需要哪些具体步骤?
毕竟,我找到了一种使用 wpa_supplicant 的 dbus 接口启动接入点的方法。
下面是不言自明的 python 代码,它试图用找到的第一个接口(适配器)启动 AP。
import dbus
import sys
ssid = "TEST_WPA_DBUS_HOTSPOT"
frequency = 2412
bus = dbus.SystemBus()
wpa_sup_obj = bus.get_object('fi.w1.wpa_supplicant1', '/fi/w1/wpa_supplicant1')
props_iface = dbus.Interface(wpa_sup_obj, "org.freedesktop.DBus.Properties")
interfaces = props_iface.Get('fi.w1.wpa_supplicant1', "Interfaces")
try:
interface = interfaces[0]
except IndexError:
sys.exit("No interfaces availible")
print "Creating ap with %s" % (interface)
interface_obj = bus.get_object('fi.w1.wpa_supplicant1', interface)
interface_interface_props = dbus.Interface(interface_obj, "org.freedesktop.DBus.Properties")
interface_interface = dbus.Interface(interface_obj, "fi.w1.wpa_supplicant1.Interface")
adapters_name = interface_interface_props.Get("fi.w1.wpa_supplicant1.Interface", "Ifname")
print "Interface's name is %s" % adapters_name
key_mgmt = "NONE"
args = dbus.Dictionary({
'ssid': ssid,
'key_mgmt': key_mgmt,
'mode': 2,
'frequency': frequency
}, signature='sv')
netw = interface_interface.AddNetwork(args)
interface_interface.SelectNetwork(netw)
print "AP %s with frequency %i created with adapter %s" % ( ssid, frequency, adapters_name)
请注意,毕竟,我发现 wpa_supplicant 对我的需求不太可靠(在我的特定情况下,我无法启动 5GHz AP)并且已切换到启动 hostapd不同的配置文件。
有人告诉我可以通过 wpa_supplicant 通过其 dbus 接口创建一个访问点。我用 google 找到的所有内容是 this forum thread,尽管标题完全相同,但对我来说并没有太多信息。
是否可以通过 wpa_supplicant dbus 接口执行此操作?创建具有自定义参数(如频率等)的接口需要哪些具体步骤?
毕竟,我找到了一种使用 wpa_supplicant 的 dbus 接口启动接入点的方法。
下面是不言自明的 python 代码,它试图用找到的第一个接口(适配器)启动 AP。
import dbus
import sys
ssid = "TEST_WPA_DBUS_HOTSPOT"
frequency = 2412
bus = dbus.SystemBus()
wpa_sup_obj = bus.get_object('fi.w1.wpa_supplicant1', '/fi/w1/wpa_supplicant1')
props_iface = dbus.Interface(wpa_sup_obj, "org.freedesktop.DBus.Properties")
interfaces = props_iface.Get('fi.w1.wpa_supplicant1', "Interfaces")
try:
interface = interfaces[0]
except IndexError:
sys.exit("No interfaces availible")
print "Creating ap with %s" % (interface)
interface_obj = bus.get_object('fi.w1.wpa_supplicant1', interface)
interface_interface_props = dbus.Interface(interface_obj, "org.freedesktop.DBus.Properties")
interface_interface = dbus.Interface(interface_obj, "fi.w1.wpa_supplicant1.Interface")
adapters_name = interface_interface_props.Get("fi.w1.wpa_supplicant1.Interface", "Ifname")
print "Interface's name is %s" % adapters_name
key_mgmt = "NONE"
args = dbus.Dictionary({
'ssid': ssid,
'key_mgmt': key_mgmt,
'mode': 2,
'frequency': frequency
}, signature='sv')
netw = interface_interface.AddNetwork(args)
interface_interface.SelectNetwork(netw)
print "AP %s with frequency %i created with adapter %s" % ( ssid, frequency, adapters_name)
请注意,毕竟,我发现 wpa_supplicant 对我的需求不太可靠(在我的特定情况下,我无法启动 5GHz AP)并且已切换到启动 hostapd不同的配置文件。