178 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			178 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| 
 | |
| TRY=0
 | |
| HOSTAPD=`ps`
 | |
| HOSTAPD=`echo $HOSTAPD | grep hostapd`
 | |
| if [ -n "$HOSTAPD" ]; then
 | |
|         echo "hostapd is running. Try to stop it"
 | |
| 	killall -9 hostapd
 | |
| 	while [ 1 ]
 | |
| 	do
 | |
| 		HOSTAPD=`ps`
 | |
| 		HOSTAPD=`echo $HOSTAPD | grep hostapd`
 | |
| 		if [ -n "$HOSTAPD" ]; then
 | |
| 			if [ $TRY -gt 5 ]; then
 | |
| 				echo "can't stop hostapd"
 | |
| 				exit 255
 | |
| 			else
 | |
| 				echo "TRY=$TRY"
 | |
| 				TRY=$((${TRY}+1))
 | |
| 	                        sleep 1
 | |
| 			fi
 | |
| 		else
 | |
| 			echo "hostapd is stopped"
 | |
| 			break
 | |
| 		fi
 | |
| 	done
 | |
| fi
 | |
| 
 | |
| TRY=0
 | |
| WPA=`ps`
 | |
| WPA=`echo $WPA | grep wpa_supplicant`
 | |
| if [ -n "$WPA" ]; then
 | |
|         echo "wpa_supplicant is running. Try to stop it"
 | |
|         killall -9 wpa_supplicant
 | |
|         while [ 1 ]
 | |
|         do
 | |
| 		WPA=`ps`
 | |
| 		WPA=`echo $WPA | grep wpa_supplicant`
 | |
|                 if [ -n "$WPA" ]; then
 | |
|                         if [ $TRY -gt 5 ]; then
 | |
|                                 echo "can't stop wpa_supplicant"
 | |
|                                 exit 255
 | |
|                         else
 | |
|                                 echo "TRY=$TRY"
 | |
|                                 TRY=$((${TRY}+1))
 | |
|                                 sleep 1
 | |
|                         fi
 | |
|                 else
 | |
|                         echo "wpa_supplicant is stopped"
 | |
|                         break
 | |
|                 fi
 | |
|         done
 | |
| fi
 | |
| 
 | |
| if [ "$1" == "ap" ]; then
 | |
| 	echo ieee80211n=1 >> /var/run/hostapd.conf
 | |
| 
 | |
| 	if [ "$2" == "0" ]; then
 | |
| 		ifconfig wlan0 up
 | |
| 		iwlist wlan0 scanning
 | |
| 
 | |
| 		READFILE=/proc/net/rtl8189es/wlan0/best_channel
 | |
| 
 | |
| 		best_cnt=99
 | |
| 		best_channel=1
 | |
| 
 | |
| 		while read line; do
 | |
| 			channel=$(echo $line | cut -d" " -f 6)
 | |
| 			cnt=$(echo $line | cut -d" " -f 8)
 | |
| 
 | |
| 			if [ -n cnt ]; then
 | |
| 				if [ $cnt -le $best_cnt ]; then
 | |
| 					if [ $channel -le 11 ]; then
 | |
| 						best_cnt=$cnt
 | |
| 						best_channel=$channel
 | |
| 					fi
 | |
| 				fi
 | |
| 			fi
 | |
| 		done < $READFILE
 | |
| 		echo channel=$best_channel >> /var/run/hostapd.conf
 | |
| 	else
 | |
| 		echo channel=$2 >> /var/run/hostapd.conf
 | |
| 	fi
 | |
| 	/usr/local/bin/hostapd /var/run/hostapd.conf &
 | |
| 	TRY=0
 | |
| 	while [ 1 ]
 | |
| 	do
 | |
| 	        UP=`ifconfig wlan0 | grep UP`
 | |
| 	        echo "UP=$UP"
 | |
| 	
 | |
| 	        if [ -z "$UP" ]; then
 | |
| 	                echo "TRY=$TRY"
 | |
| 	                if [ $TRY -gt 5 ]; then
 | |
| 	                        /usr/local/bin/hostapd stop
 | |
| 	                        exit 255
 | |
| 	                else
 | |
| 	                        TRY=$((${TRY}+1))
 | |
| 	                        sleep 1
 | |
| 	                fi
 | |
| 	        else
 | |
| 	                echo "UP ok"
 | |
| 	                ifconfig wlan0 192.168.1.254
 | |
| 			break
 | |
| 	        fi
 | |
| 	done
 | |
| 
 | |
| 	udhcpd /etc/udhcpdw.conf
 | |
| 	TRY=0
 | |
| 	while [ 1 ]
 | |
| 	do
 | |
| 	        DHCP=`ps`
 | |
| 	        DHCP=`echo $DHCP | grep udhcpd`
 | |
| 	        echo "DHCP=$DHCP"
 | |
| 	
 | |
| 	        if [ -z "$DHCP" ]; then
 | |
| 	                echo "TRY=$TRY"
 | |
| 	                if [ $TRY -gt 5 ]; then
 | |
| 	                        echo "Can't run udhcpd"
 | |
| 	                        exit 255
 | |
| 	                else
 | |
| 	                        TRY=$((${TRY}+1))
 | |
| 	                        sleep 1
 | |
| 	                fi
 | |
| 	        else
 | |
| 	                echo "udhcpd ok"
 | |
| 	                exit 0
 | |
| 	        fi
 | |
| 	done
 | |
| elif [ "$1" == "sta" ]; then
 | |
|         wpa_supplicant -i wlan0 -c /var/run/wpa_supplicant.conf &
 | |
|         TRY=0
 | |
|         while [ 1 ]
 | |
|         do
 | |
|                 UP=`ifconfig wlan0 | grep UP`
 | |
|                 echo "UP=$UP"
 | |
| 
 | |
|                 if [ -z "$UP" ]; then
 | |
|                         echo "TRY=$TRY"
 | |
|                         if [ $TRY -gt 5 ]; then
 | |
|                                 /usr/local/bin/hostapd stop
 | |
|                                 exit 255
 | |
|                         else
 | |
|                                 TRY=$((${TRY}+1))
 | |
|                                 sleep 1
 | |
|                         fi
 | |
|                 else
 | |
|                         echo "UP ok"
 | |
|                         ifconfig wlan0 192.168.1.1
 | |
|                         break
 | |
|                 fi
 | |
|         done
 | |
| 
 | |
|         udhcpc -i wlan0
 | |
|         TRY=0
 | |
|         while [ 1 ]
 | |
|         do
 | |
|                 DHCP=`ps`
 | |
|                 DHCP=`echo $DHCP | grep udhcpc`
 | |
|                 echo "DHCP=$DHCP"
 | |
| 
 | |
|                 if [ -z "$DHCP" ]; then
 | |
|                         echo "TRY=$TRY"
 | |
|                         if [ $TRY -gt 5 ]; then
 | |
|                                 echo "Can't run udhcpc"
 | |
|                                 exit 255
 | |
|                         else
 | |
|                                 TRY=$((${TRY}+1))
 | |
|                                 sleep 1
 | |
|                         fi
 | |
|                 else
 | |
|                         echo "udhcpd ok"
 | |
|                         exit 0
 | |
|                 fi
 | |
|         done
 | |
| fi
 | |
| 
 | |
| exit 255
 | 
