1#!/bin/sh 2 3cnt1=`ps aux | grep hostapd | grep -v grep | wc -l` 4if [ "$cnt1" != "0" ];then 5 killall hostapd > /dev/null 6fi 7 8/etc/init.d/S80dnsmasq stop > /dev/null 9 10 11function usage() 12{ 13 echo "Usage: -i <wifi> -s <ssid> -p <password>" 14 echo "eg: ./wifi.sh -i mlan0 -s bjforlinx -p 12345678 " 15 echo "eg: ./wifi.sh -i mlan0 -s bjforlinx -p NONE " 16 echo " -i : mlan0 or mlan1" 17 echo " -s : wifi ssid" 18 echo " -p : wifi password or NONE" 19} 20 21function parse_args() 22{ 23 while true; do 24 case "$1" in 25 -i ) wifi=$2;echo wifi $wifi;shift 2 ;; 26 -s ) ssid=$2;echo ssid $ssid;shift 2 ;; 27 -p ) pasw=$2;echo pasw $pasw;shift 2 ;; 28 -h ) usage; exit 1 ;; 29 * ) break ;; 30 esac 31 done 32} 33 34if [ $# != 6 ] 35then 36 usage; 37 exit 1; 38fi 39 40parse_args $@ 41 42if [ -e /etc/wpa_supplicant.conf ] 43then 44 rm /etc/wpa_supplicant.conf 45fi 46 echo \#PSK/TKIP >> /etc/wpa_supplicant.conf 47 echo ctrl_interface=/var/run/wpa_supplicant >>/etc/wpa_supplicant.conf 48 echo ctrl_interface_group=0 >>/etc/wpa_supplicant.conf 49 echo update_config=1 >>/etc/wpa_supplicant.conf 50 echo network={ >>/etc/wpa_supplicant.conf 51 echo ssid=\"$ssid\" >>/etc/wpa_supplicant.conf 52 echo scan_ssid=1 >>/etc/wpa_supplicant.conf 53 if [ $pasw == NONE ] 54 then 55 echo key_mgmt=NONE >>/etc/wpa_supplicant.conf 56 else 57 echo psk=\"$pasw\" >>/etc/wpa_supplicant.conf 58 echo key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE >>/etc/wpa_supplicant.conf 59 echo group=CCMP TKIP WEP104 WEP40 >>/etc/wpa_supplicant.conf 60 fi 61 echo } >>/etc/wpa_supplicant.conf 62 63ifconfig -a|grep mlan0 |grep -v grep > /dev/null 64if [ $? -eq 0 ] 65then 66 ifconfig mlan0 down > /dev/null 67fi 68 69ifconfig -a|grep mlan1 |grep -v grep > /dev/null 70if [ $? -eq 0 ] 71then 72 ifconfig mlan1 down > /dev/null 73fi 74 75ifconfig -a|grep eth0 |grep -v grep > /dev/null 76if [ $? -eq 0 ] 77then 78 ifconfig eth0 down > /dev/null 79fi 80 81ifconfig -a|grep eth1 |grep -v grep > /dev/null 82if [ $? -eq 0 ] 83then 84 ifconfig eth1 down > /dev/null 85fi 86 87ps -fe|grep wpa_supplicant |grep -v grep > /dev/null 88if [ $? -eq 0 ] 89then 90 kill -9 $(pidof wpa_supplicant) 91fi 92 93sleep 1 94ifconfig $wifi up > /dev/null 95sleep 1 96 97(wpa_supplicant -Dnl80211,wext -i$wifi -c/etc/wpa_supplicant.conf >/dev/null) & 98echo "waiting..." 99sleep 3 100wpa_cli -i$wifi status |grep COMPLETED |grep -v grep >/dev/null 101if [ $? -eq 0 ] 102then 103 udhcpc -i $wifi 104 echo "Finshed!" 105else 106 echo "try to connect again..." 107 sleep 3 108 wpa_cli -i$wifi status |grep COMPLETED |grep -v grep >/dev/null 109 if [ $? -eq 0 ] 110 then 111 udhcpc -i $wifi 112 echo "nameserver 114.114.114.114" > /etc/resolv.conf 113 echo "Finshed!" 114 else 115 echo "************************************************" 116 echo "connect faild,please check the passward and ssid" 117 kill -9 $(pidof wpa_supplicant) 118 exit 1 119 fi 120fi 121