Update
This commit is contained in:
@ -1,12 +1,94 @@
|
||||
#!/bin/bash
|
||||
|
||||
sudo ip addr flush dev wlan0
|
||||
iface=$(iw dev | awk '$1=="Interface"{print $2}' | grep '^wlan')
|
||||
file="/etc/wpa_supplicant/wpa_supplicant-monopoly.conf"
|
||||
|
||||
ssid="no_args_given"
|
||||
|
||||
# Parse arguments
|
||||
while getopts ":s:p:" opt; do
|
||||
case ${opt} in
|
||||
s )
|
||||
ssid="$OPTARG"
|
||||
;;
|
||||
: )
|
||||
echo "Invalid option: $OPTARG" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
shift $((OPTIND -1))
|
||||
|
||||
|
||||
|
||||
# Remove all disabled
|
||||
sudo sed -i '/disabled=1/d' "$file"
|
||||
|
||||
# Temporary file to store modified content
|
||||
temp_file=$(mktemp)
|
||||
|
||||
# Use awk to add disabled=1 within each network block
|
||||
awk '
|
||||
BEGIN { RS="\n\n"; FS="\n"; OFS="\n" }
|
||||
{
|
||||
found=0
|
||||
for(i=1; i<=NF; i++) {
|
||||
if ($i ~ /^network=/) {
|
||||
for(j=i+1; j<=NF && $j !~ /^}/; j++) {
|
||||
if ($j ~ /^disabled=1/) {
|
||||
found=1
|
||||
break
|
||||
}
|
||||
}
|
||||
if (!found) {
|
||||
$i = $i "\n disabled=1"
|
||||
}
|
||||
}
|
||||
}
|
||||
print $0 "\n"
|
||||
}' "$file" > "$temp_file"
|
||||
|
||||
# Overwrite the original file with the modified content
|
||||
sudo mv -f "$temp_file" "$file"
|
||||
|
||||
|
||||
temp_file=$(mktemp)
|
||||
|
||||
while IFS= read -r line
|
||||
do
|
||||
if [[ "$line" == *"$ssid"* ]]; then
|
||||
echo $line $ssid
|
||||
remove_line=1
|
||||
echo "remove_line=1"
|
||||
fi
|
||||
|
||||
if [[ "$remove_line" -eq 1 && "$line" == *"disabled=1"* ]]; then
|
||||
echo "skipped disabled line"
|
||||
continue
|
||||
fi
|
||||
|
||||
if [[ "$line" == *"}"* ]]; then
|
||||
in_block=0
|
||||
remove_line=0
|
||||
fi
|
||||
|
||||
echo "$line" >> "$temp_file"
|
||||
done < "$file"
|
||||
|
||||
# Overwrite the original file with the modified content
|
||||
sudo mv -f "$temp_file" "$file"
|
||||
|
||||
cat $file
|
||||
exit 0
|
||||
|
||||
|
||||
sudo ip addr flush dev $iface
|
||||
sudo killall wpa_supplicant
|
||||
sudo truncate -s 0 /tmp/wifi_connection_status.txt
|
||||
sudo wpa_supplicant -B -i wlan0 -f /tmp/wifi_connection_status.txt -c /etc/wpa_supplicant/wpa_supplicant.conf
|
||||
sudo wpa_supplicant -B -i $iface -f /tmp/wifi_connection_status.txt -c $file
|
||||
|
||||
declare -i i=0
|
||||
declare -i timeout=10
|
||||
declare -i timeout=5
|
||||
while [ $i -le $timeout ]; do
|
||||
if grep -iq 'CTRL-EVENT-CONNECTED' /tmp/wifi_connection_status.txt; then
|
||||
sudo dhclient wlan0
|
||||
|
Reference in New Issue
Block a user