systemd:如何有select地禁用wpa_supplicant为特定的WLAN接口?

systemdnetworkd的Linux系统上,我需要在一个WLAN接口上运行一个WLAN接入点,同时在普通站(“客户”)模式下运行更多的(热插拔)WLAN接口。

事实certificate, wpa_supplicant.service在我的所有WLAN接口上都可以正常使用,如果只有所有这些WLAN接口都可以在站点/客户端模式下运行的话,那就没问题了。 然而,当wpa_supplicant.service服务于WLAN接口时, hostapd.service在AP接入点模式下操作WLAN接口。

所以我想只为特定的接口禁用wpa_supplicant.service ,比如wls35u2 。 我的想法是有一个[email protected]单元,我可以有select地禁用,但离开wpa_supplicant.service启用。 但是,这似乎不工作,或者我在[email protected]做错了。

那么,如何才能在特定的接口上禁用WPA请求者服务,而不是全局禁用呢?

[编辑:看@rweisse回答一个更好的方式来做到这一点]

我在树莓派上遇到了同样的问题。

我发现wpa_supplicant @ wlan0wpa_supplicant @ wlan1 (我有两个wlan接口)和wpa_supplicant.service都被禁用。

我设法find(至less在raspbian,我不知道它是如何在其他debian版本) dhcpcd负责wpa_supplicant启动。

/ lib / dhcpcd / dhcpcd-hooks下 ,有一个名为“10-wpa-supplicant”的文件,您可以在其中findwpa_supplicant的启动/重新configuration/停止过程。

在这个文件中,我只是在正在处理的$接口上添加条件。 对于每个PROCEDURE_NAME(开始/停止/重新configuration):

 PROCEDURE_NAME( ) if [ "$interface" != "TheInterfaceWPASupplicantShouldBeDisabledOn" ] then Code of the prodecure else return 0 fi 

之后,我重新启动了dhcpcd服务

 systemctl restart dhcpcd 

现在InterfaceWPASupplicant应该被禁止使用hostapd不再是一个问题。 这个解决scheme有点残酷,因为我不认为这样做应该是这样的,但是我没有find任何手册来说明如何做到这一点。

希望这个帮助。

我有同样的问题。 @Nprojectfind了一个很好的解决scheme。 但是你不必修改这些程序。 简单地去到Nproject提到的文件( /lib/dhcpcd/dhcpcd-hooks/10-wpa-supplicant )的末尾并修改下面的if子句:

原版的

 if [ "$ifwireless" = "1" ] && \ type wpa_supplicant >/dev/null 2>&1 && \ type wpa_cli >/dev/null 2>&1 then case "$reason" in PREINIT) wpa_supplicant_start;; RECONFIGURE) wpa_supplicant_reconfigure;; DEPARTED) wpa_supplicant_stop;; esac fi 

以这种方式添加[ "$interface" != "TheInterfaceWPASupplicantShouldBeDisabledOn" ]

改性

 if [ "$ifwireless" = "1" ] && [ "$interface" != "TheInterfaceWPASupplicantShouldBeDisabledOn" ] && \ type wpa_supplicant >/dev/null 2>&1 && \ type wpa_cli >/dev/null 2>&1 then case "$reason" in PREINIT) wpa_supplicant_start;; RECONFIGURE) wpa_supplicant_reconfigure;; DEPARTED) wpa_supplicant_stop;; esac fi 

此外,这将阻止任务栏中的networkingpipe理器(GUI)显示此界面。