我在etc / wpa_supplicant / wpa_supplicant.conf中保存了多个wifi网络ssid,如下所示, 我们可以从这个wpa_supplicant.conf
中删除一个特定的网络吗?Ex:在下面的网络中可以通过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
}
答案 0 :(得分:4)
使用$email = "abcdef@gmail.com";
print preg_replace_callback('/(\w)(.*?)(\w)(@.*?)$/s', function ($matches){
return $matches[1].preg_replace("/\w/", "*", $matches[2]).$matches[3].$matches[4];
}, $email);
# a****f@gmail.com
即可:
1:
wpa_cli
其中wpa_cli remove_network 0
是运行0
后获得的network_id。它将删除网络并断开使用它的任何接口。
请注意,wpa_cli add_network
不是文件中网络的顺序。您可以使用network id
2:
wpa_cli list_networks
这将保留更改,相应的网络块将从wpa_cli save_config
答案 1 :(得分:0)
你可以把它写成你自己。一些非常丑陋的Quick-n-Dirty Code就是例如:
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"
答案 2 :(得分:0)
我能够通过以下脚本完成它:
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
答案 3 :(得分: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
需要temp var,因为这是我发现实际让awk写入文件处理的最简单方法。 要查看更改wpa_supplicant.conf的效果,请执行
svc wifi disable && svc wifi enable
一些参考文献: