如何通过命令行/ shell脚本从etc/wpa_supplicant/wpa_supplicant.conf中删除网络配置文件

6

我在etc/wpa_supplicant/wpa_supplicant.conf文件中保存了多个wifi网络的ssid,如下所示, 我们能否从这个wpa_supplicant.conf文件中删除特定的网络?

例如:在下面的网络中,我能否通过一个shell脚本删除myssid1网络,然后通过node.js服务器执行该脚本。

 network={
            ssid="myssid1"
            scan_ssid=0
            proto=WPA
            key_mgmt=WPA-PSK
            psk=5f55a9b869e9ab6d03839cae23c7243accc0ac0a12079d358328bf73ad2e0ebe
    }
    network={
           ssid="myssid2"
           scan_ssid=0
           proto=WPA
           key_mgmt=WPA-PSK
           psk=d89660510d06bbf7691f5296daae36872d697a88876c53db7de91aa85df4f68b
    }
    network={
           ssid="myssid3"
           scan_ssid=0
           proto=WPA
           key_mgmt=WPA-PSK
           psk=d635b33481a13b28a67e8964f58343cb19bc8c85c67cc56ee9bfe0c302914a5f
    }
4个回答

16
使用wpa_cli,您可以执行以下操作:

1:

wpa_cli remove_network 0

其中0是运行wpa_cli add_network后获得的network_id。它将删除该网络并断开使用它的任何接口。

请注意,network id不是文件中网络的顺序。您可以使用wpa_cli list_networks获取配置的网络。

2:

wpa_cli save_config

这将使更改生效,并且相应的网络块将从etc/wpa_supplicant/wpa_supplicant.conf中删除。


谢谢!我的Squeezebox收音机让我快疯了!! - ramsey_lewis

0

你可以自己编写代码。一个非常丑陋的快速脏代码示例可能是:

file="/etc/wpa_supplicant/wpa_supplicant.conf"
foo="$(cat "$file" | awk '/myssid3/ { flag=1 }; flag==0 { print $0 }; /network={/ { flag=0 }' )"
if echo -e "$foo" | tail -1 | grep -q 'network={'; then
   foo=$(echo -e "$foo" | head -n -1)
fi
echo -e "$foo" > "$file"

谢谢您的输入,有没有使用node.js实现相同功能的方法? - Rolwin Crasta
我尝试了这段代码,但是出现了错误:没有这个文件或目录a_supplicant.conf。myfile.sh: 第7行:语法错误:意外的文件结尾。 - Rolwin Crasta

0
SSID=$1 
temp_var=$(sudo awk -v RS= '!/${SSID}/{printf $0""RT}' etc/wpa_supplicant/wpa_supplicant.conf)
echo -e "$temp_var" | sudo tee etc/wpa_supplicant/wpa_supplicant.conf

需要使用临时变量,因为这是我发现的最简单的方法,可以让awk将其处理后的内容写入文件中。 要查看更改wpa_supplicant.conf的效果,请执行以下操作

svc wifi disable && svc wifi enable

一些参考资料:

-1
我使用以下脚本完成了它:
SSID_TO_DELETE=$1 
sed -n "1 !H 1 h $ { x s/[[:space:]]*network={\n[[:space:]]*ssid=\"${SSID_TO_DELETE}\"[^}]*}//g p }" /etc/wpa_supplicant/wpa_supplicant.conf > /etc/wpa_supplicant/wpa_supplicant.conf 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接