Advertisement
constantin-net

wpa_connect2.3

Aug 15th, 2022 (edited)
669
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 5.82 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. #v2.3
  4. [ -z "$1" -o -z "$2" ] && echo "w_iface in_essid/last/down/hidden" && exit 0
  5.  
  6. wpa_config_dir="$HOME/.config/wpa_supplicant"
  7. wpa_config="$HOME/.config/wpa_supplicant/wpa_supplicant.conf"
  8. last_ssid=$(cat $wpa_config | grep ssid=\" | awk -F'=' '{print $2}')
  9.  
  10. case $2 in
  11.     down)
  12.         echo " "
  13.         echo "$last_ssid: Disconnecting..."
  14.         echo " "
  15.         fsudo -c | sudo -S -p '' pkill wpa_supplicant
  16.         sudo dhclient $1 -x
  17.         sudo ifconfig $1 down
  18.         sleep 1
  19.         exit 0
  20.         ;;
  21.     last)
  22.         echo " "
  23.         echo "$last_ssid: Connecting..."
  24.         echo " "
  25.         fsudo -c | sudo -S -p '' dhclient $1 -x
  26.         sudo pkill wpa_supplicant
  27.         sudo ifconfig $1 down
  28.         sudo ifconfig $1 up
  29.         if [[ -z `cat /etc/network/interfaces | grep $1` ]]; then
  30.             sudo wpa_supplicant -B -Dwext -i $1 -c "$wpa_config" &>/dev/null
  31.             sudo dhclient -1 $1
  32.             if [ $? -eq 0 ]; then
  33.                 echo "Success"
  34.                 sleep 1
  35.             else
  36.                 echo "Fail"
  37.                 sleep 1
  38.             fi
  39.         else
  40.             sudo ifup $1
  41.         fi
  42.         exit 0
  43.         ;;
  44.     hidden)
  45.         echo " "
  46.         echo "Hidden network..."
  47.         echo " "
  48.         fsudo -c | sudo -S -p '' dhclient $1 -x
  49.         sudo pkill wpa_supplicant
  50.         sudo ifconfig $1 down
  51.         sudo ifconfig $1 up
  52.         echo -n "Enter SSID: "
  53.         read essid
  54.         channel="auto"
  55.         mode="managed"
  56.         while true; do
  57.             read -r -s -p "$essid: Enter password: " key
  58.             if [ ${#key} -lt 8 ] || [ ${#key} -gt 32 ]; then
  59.                 echo "The password must be 8-32 characters"
  60.                 :
  61.             else
  62.                 break
  63.             fi
  64.         done
  65.         skey=$(wpa_passphrase "$essid" $key 2>/dev/null | sed -n 's/^[ \t]psk=//gp')
  66.         echo "ctrl_interface=/var/run/wpa_supplicant
  67. ap_scan=1
  68. network={
  69. ssid=\"$essid\"
  70. scan_ssid=1
  71. proto=WPA RSN
  72. key_mgmt=WPA-PSK
  73. pairwise=CCMP TKIP
  74. group=CCMP TKIP
  75. psk=$skey
  76. }" > "$wpa_config"
  77.         if [[ -z `cat /etc/network/interfaces | grep $1` ]]; then
  78.             sudo wpa_supplicant -B -Dwext -i $1 -c "$wpa_config"
  79.             sudo dhclient $1
  80.             if [ $? -eq 0 ]; then
  81.                 echo "Success"
  82.                 sleep 1
  83.             else
  84.                 echo "Fail"
  85.                 sleep 1
  86.             fi
  87.         else
  88.             sudo ifup $1
  89.         fi
  90.         exit 0
  91.         ;;
  92.     *)
  93.         md5name=$(echo -n $2 | md5sum | cut -d" " -f1)
  94.         fsudo -c | sudo -S -p '' dhclient $1 -x
  95.         sudo pkill wpa_supplicant
  96.         sudo dhclient -r
  97.         sudo ifconfig $1 up
  98.         cell=$(echo $2 | awk -F"=" '{print $1}')
  99.         essid=$(echo $2 | awk -F"=" '{print $2}')
  100.         if [[ -z `find "$wpa_config_dir" -name "$md5name"` ]]; then
  101.             echo " "
  102.             echo "$essid: Connecting..."
  103.             echo " "
  104.             scan_parms="$(sudo iwlist $1 scan)"
  105.             scan_parms=$(echo "$scan_parms" | sed -ne "/Cell $cell/,/Cell/ p" | sed 's/^[ \t]*//')
  106.             channel=$(echo "$scan_parms" | grep Channel: | sed 's/.*Channel://g')
  107.             pairwise=$(echo "$scan_parms" | grep -m 1 Pairwise | sed 's/.* : //g')
  108.             group=$(echo "$scan_parms" | grep -m 1 Group | sed 's/.* : //g')
  109.             mode=$(echo "$scan_parms" | grep Mode | sed 's/.*Mode://g')
  110.             if [[ "$mode" == "Master" ]]; then
  111.                 mode="managed"
  112.             else
  113.                 echo "Cannot connect"
  114.                 sleep 2
  115.                 exit
  116.             fi
  117.             key=$(echo "$scan_parms" | grep key: | sed 's/.*key://g')
  118.             if [[ $key == "on" ]]; then
  119.                 while true; do
  120.                     read -r -s -p "$essid: Enter password: " key
  121.                     if [ ${#key} -lt 8 ] || [ ${#key} -gt 32 ]; then
  122.                         echo "The password must be 8-32 characters"
  123.                         :
  124.                     else
  125.                         break
  126.                     fi
  127.                 done
  128.             fi
  129.             skey=$(wpa_passphrase "$essid" $key 2>/dev/null | sed -n 's/^[ \t]psk=//gp')
  130.             IE=$(echo "$scan_parms" | grep WPA | sed 's/.*: //g')
  131.             if [[ -n "$IE" ]]; then
  132.                 echo "ctrl_interface=/var/run/wpa_supplicant
  133. ap_scan=1
  134. network={
  135. ssid=\"$essid\"
  136. scan_ssid=0
  137. proto=WPA RSN
  138. key_mgmt=WPA-PSK
  139. pairwise=$pairwise
  140. group=$group
  141. psk=$skey
  142. }" > "$wpa_config"
  143.                 if [[ -z `cat /etc/network/interfaces | grep $1` ]]; then
  144.                     sudo wpa_supplicant -B -Dwext -i $1 -c "$wpa_config" &>/dev/null
  145.                     sudo dhclient -1 $1
  146.                     if [ $? -eq 0 ]; then
  147.                         echo "Success"
  148.                         cp "$wpa_config" "$wpa_config_dir"/"$md5name"
  149.                         sleep 1
  150.                     else
  151.                         echo "Fail"
  152.                         sleep 1
  153.                     fi
  154.                 else
  155.                     sudo ifup $1
  156.                 fi
  157.                 exit 0
  158.             else
  159.                 sudo iwconfig $1 essid "$essid" channel $channel mode $mode key $key
  160.                 sudo dhclient $1
  161.                 exit 0
  162.             fi
  163.         else
  164.             echo " "
  165.             echo "$essid: Connecting..."
  166.             echo " "
  167.             sudo wpa_supplicant -B -Dwext -i $1 -c "$wpa_config_dir"/"$md5name" &>/dev/null
  168.             sudo dhclient -1 $1
  169.             if [ $? -eq 0 ]; then
  170.                 echo "Success"
  171.                 cp "$wpa_config_dir"/"$md5name" "$wpa_config"
  172.                 sleep 1
  173.                 exit 0
  174.             else
  175.                 echo "Fail"
  176.                 rm "$wpa_config_dir"/"$md5name"
  177.                 sleep 1
  178.                 exit 0
  179.             fi
  180.         fi
  181. esac
  182.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement