【发布时间】:2017-07-20 14:03:20
【问题描述】:
我目前正在编写两个脚本,一个用于连接 wifi 网络,另一个用于断开连接。
连接脚本运行良好,但是当我这样做时
sudo ifconfig wlan0 down
sudo ifconfig wlan0 up
即使 /etc/network/interfaces 中没有关于 wlan0 的内容,接口也会自动重新连接到网络。
但是,如果我重新启动,wlan0 将无法连接。
这是我为您感兴趣的人准备的脚本
#!/bin/bash
SSID="ssid"
PASSWORD="pass"
CONF_FILE="/etc/wpa_supplicant/$SSID.conf"
if [ -f "$CONF_FILE" ]; then
echo "wpa configuration file already exists"
else
echo "wpa configuration file doesn't exists"
#Generating configuration file
sudo wpa_passphrase $SSID $PASSWORD > $CONF_FILE
#Delete the line containing the password
sudo sed -i '/$PASSWORD/d' $CONF_FILE
fi
#Connecting to network
sudo wpa_supplicant -c $CONF_FILE -i wlan0 &
我认为这是因为 wpa_supplicant 仍在后台运行,有人知道如何在不知道其 pid 的情况下杀死 wpa_supplicant 正在运行的进程吗?
编辑:我确认它来自在后台运行的 wpa-supplicant。 我发现解决它的唯一方法是调用
sudo killall wpa_supplicant
但是这个解决方案不能满足我,想象一下我在另一个接口上运行另一个 wpa_supplicant 实例,我将失去所有网络连接。 很确定有更好的方法来终止与此特定接口关联的进程。 我会四处挖掘。 希望有人已经遇到过这种情况。
【问题讨论】:
-
您当前是否有多个网络接口在运行。如果没有,你最好运行“systemd network restart”
-
是的,我在 eth0 上也有一个正在运行的接口,稍后我可能在 wlan1 上还有第三个。
标签: linux networking ifconfig wpa-supplicant