#!/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 echo driver=nl80211 >> /var/run/hostapd.conf echo ctrl_interface=/var/run/hostapd >> /var/run/hostapd.conf echo ctrl_interface_group=0 >> /var/run/hostapd.conf echo ignore_broadcast_ssid=0 >> /var/run/hostapd.conf echo auth_algs=1 >> /var/run/hostapd.conf echo beacon_int=100 >> /var/run/hostapd.conf echo dtim_period=1 >> /var/run/hostapd.conf echo preamble=0 >> /var/run/hostapd.conf echo wpa_key_mgmt=WPA-PSK >> /var/run/hostapd.conf #echo channel=6 >> /var/run/hostapd.conf if [ "$2" == "0" ]; then ifconfig wlan0 up iwlist wlan0 scanning > /dev/null READFILE=/proc/net/rtl8189fs/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 [ "$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 hostapd /var/run/hostapd.conf & TRY=0 while [ 1 ] do UP=`ifconfig wlan0 | grep UP` if [ -z "$UP" ]; then echo "TRY=$TRY" if [ $TRY -gt 5 ]; then 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` 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 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