186 lines
4.7 KiB
Bash
Executable File
186 lines
4.7 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
|
|
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
|