(对建立网络相当陌生)
我试图在我的ubuntu18.04机器上设置一个小的,但有点复杂的网络设置。
网络的拓扑结构: Ubuntu机器(称为“服务器”)将充当热点和以太网的DHCP服务器。连接到ubuntu机器的是两个ubuntu机器客户端和一个照相机。
我用python库实现了“服务器”,以建立/关闭一个热点连接,该连接按预期工作。但我的问题是如何管理ip地址和路由。
我将详细阐述我面临的两个问题:
但是编辑文件并不是满足我的需求的正确方法,我宁愿从代码本身进行编辑。为了进行相同的更改,我需要对代码进行哪些更改?
dbus的代码连接对象如下所示:
def get_hotspot_struct(iface, uuid, ssid, password):
s_con = dbus.Dictionary({
'type': '802-11-wireless',
'uuid': uuid,
'id': 'PixellotHotspot',
'interface-name': iface,
})
s_wifi = dbus.Dictionary({
'ssid': dbus.ByteArray(ssid.encode()),
'mode': 'ap',
'band': 'bg',
'channel': dbus.UInt32(1),
})
s_wsec = dbus.Dictionary({
'key-mgmt': 'wpa-psk',
'psk': password,
})
s_ipv4 = dbus.Dictionary({
'method': 'shared',
})
s_ipv6 = dbus.Dictionary({
'method': 'ignore',
})
con = dbus.Dictionary({
'connection': s_con,
'802-11-wireless': s_wifi,
'802-11-wireless-security': s_wsec,
'ipv4': s_ipv4,
'ipv6': s_ipv6,
})
logger.info('Getting hotspot connection template')
logger.info(con)
return con但是这似乎只在服务器上起作用,当我用以太网将ubuntu客户端连接到服务器时,服务器根本不会给客户机任何ip。它适用于热点,但不适用于以太网。
我知道我的问题是非常具体的,到处都是,但我会感谢任何帮助。如果你知道这个问题,在这里/发送电子邮件/ Facebook me(Yves Halimi)。会有帮助的!!
发布于 2022-07-20 14:28:05
D总线API是在man nm-settings-dbus中记录的.
对于NetworkManager来说,总是要创建连接配置文件并激活它们。所以,如果你的代码可以创建一个概要文件,那么另一个概要文件的工作原理基本上是一样的--只是一些键会有所不同。
我发现使用其他NetworkManager客户机之一并与它们进行比较是很有帮助的。例如,您还可以使用nmcli connection add type ...创建配置文件,然后通过nmcli -f all connection show获取D总线路径,最后查看配置文件在D总线上的外观:
busctl -j call org.freedesktop.NetworkManager /org/freedesktop/NetworkManager/Settings/1 org.freedesktop.NetworkManager.Settings.Connection GetSettings 参见上游示例:python+dbus
也许您会发现使用python + pygobject + libnm更容易。在这种情况下,请参见示例这里。主要的缺点是您将有一个额外的依赖项(pygobject)。libnm不是额外的依赖项,如果您使用NetworkManager,您已经有了它。
https://stackoverflow.com/questions/72349196
复制相似问题