Linux 如何通过命令行/shell脚本从etc/wpa_-supplicant/wpa_-supplicant.conf删除网络配置文件

Linux 如何通过命令行/shell脚本从etc/wpa_-supplicant/wpa_-supplicant.conf删除网络配置文件,linux,node.js,shell,raspberry-pi,raspbian,Linux,Node.js,Shell,Raspberry Pi,Raspbian,我的etc/wpa_-supplicant/wpa_-supplicant.conf中保存了多个wifi网络ssid,如下所示, 我们可以从这个wpa_supplicant.conf中删除一个特定的网络吗 例如:在下面的网络中,可以通过shell脚本删除网络myssid1,然后通过node.js服务器执行该脚本 network={ ssid="myssid1" scan_ssid=0 proto=WPA

我的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
    }

你可以自己写。一些非常丑陋的Quick-n-Dirty代码可能是:

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"

我可以用下面的脚本完成它:

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 
之所以需要temp var,是因为这是我发现的最简单的方法,可以让awk将其处理过程写入文件。 要查看更改wpa_supplicant.conf的效果,请执行以下操作

svc wifi disable && svc wifi enable
一些参考资料:


使用
wpa\u cli
可以执行以下操作:

1:

其中
0
是运行
wpa\u cli add\u network
后获得的网络id。它将删除网络并断开使用它的任何接口

请注意,
网络id
不是文件中网络的顺序。您可以使用
wpa\u cli list\u networks

2:


这将保留更改,相应的网络块将从
etc/wpa_-supplicant/wpa_-supplicant.conf中删除,谢谢您的输入,有没有一种方法可以对node.js执行同样的操作?我尝试了这段代码,但得到的错误是:没有这样的文件或目录a_supplicant.conf myfile.sh:第7行:语法错误:文件意外结束谢谢!我的挤压盒收音机快把我逼疯了!!
svc wifi disable && svc wifi enable
wpa_cli remove_network 0
wpa_cli save_config