我想与一个用connman管理网络(eth0,wlan0)的应用程序一起使用hostapd(在虚拟网络设备上)。
问题是,我必须保持一定的操作顺序。手动启动系统单元是可行的,但是我需要通过应用程序以编程方式进行。
我做什么:
connmanctl enable wifi
systemctl start ap
connmanctl disable wifi
systemctl start hostapd
connmanctl enable wifi
我尝试了什么: 我将这些依赖项添加到ap.service中,因为必须在wlan0启动后创建虚拟接口(我没有找到“ UP”是什么好的定义):
BindsTo=sys-subsystem-net-devices-wlan0.device
After=sys-subsystem-net-devices-wlan0.device
Wants=network-online.target
After=network-online.target
ap.service:
[Unit]
Requires=network.target
[Service]
Type=oneshot
ExecStart=/usr/sbin/iw dev wlan0 interface add uap0 type __ap
ExecStart=/sbin/ip link set uap0 up
ExecStart=/sbin/ip addr add 192.168.4.1/24 broadcast 192.168.4.255 dev uap0
[Install]
WantedBy=multi-user.target
一种解决方案是从应用程序中以“ system(....)”启动systemd-units,但我希望避免我的应用程序以root身份运行。
感谢您的所有帮助, 迈克尔