130 lines
3.1 KiB
Bash
130 lines
3.1 KiB
Bash
#! /bin/bash
|
|
|
|
|
|
BLUE='\e[1;34m'
|
|
GREEN='\e[1;32m'
|
|
CYAN='\e[1;36m'
|
|
RED='\e[1;31m'
|
|
PURPLE='\e[1;35m'
|
|
YELLOW='\e[1;33m'
|
|
# No Color
|
|
NC='\e[0m'
|
|
|
|
#usage......
|
|
#./ap_launch.sh [wlanx]
|
|
if [ -z "$1" ]; then
|
|
echo -e "${RED}Please input the intfeface name${NC}"
|
|
echo -e "${RED}Usage:${NC}"
|
|
echo -e "${RED} ./ap_launch.sh [wlanx]${NC}"
|
|
echo -e ""
|
|
echo -e ""
|
|
echo -e ""
|
|
echo -e "${PURPLE}Please follow this procedure to lauch ap on ubuntu platform${NC}"
|
|
echo -e "${PURPLE}1. ./ap_shutdown.sh${NC}"
|
|
echo -e "${PURPLE}2. ./load.sh${NC}"
|
|
echo -e "${PURPLE}3. Disable ubuntu's network managerment${NC}"
|
|
echo -e "${PURPLE}4. rfkill unblock wifi${NC}"
|
|
#echo -e "${PURPLE}5. service isc-dhcp-server stop${NC}"
|
|
#echo -e "${PURPLE}6. service isc-dhcp-server start${NC}"
|
|
echo -e "${PURPLE}5. ps aux | grep dhcp (find the number of dhcp-server)${NC}"
|
|
echo -e "${PURPLE}6. kill [number] ${NC}"
|
|
echo -e "${PURPLE}7. edit ap.cfg for your requirement. ex:SSID, channel ${NC}"
|
|
echo -e "${PURPLE}8. use iwconfig to get your interface name${NC}"
|
|
echo -e "${PURPLE}9. ./ap_launch.sh [wlanx]${NC}"
|
|
exit
|
|
fi
|
|
|
|
|
|
dir=$(pwd)
|
|
cd $dir
|
|
|
|
#echo -e "${YELLOW}Unoad wireless driver...${NC}"
|
|
#./unload.sh
|
|
#PID=$!
|
|
#wait $PID
|
|
#sleep 2
|
|
|
|
#echo -e "${YELLOW}Load wireless driver...${NC}"
|
|
#./load.sh
|
|
#PID=$!
|
|
#wait $PID
|
|
#sleep 2
|
|
|
|
#devName=wlan0
|
|
devName=$1
|
|
echo "device name=$devName"
|
|
|
|
echo -e "${YELLOW}Config wireless AP...${NC}"
|
|
#rm -rf load_dhcp.sh
|
|
#rm -rf hostapd.conf
|
|
#relpace wlan@@ to real device name
|
|
cp script/template/load_dhcp.sh load_dhcp.sh
|
|
#cp script/template/hostapd.conf hostapd.conf
|
|
awk 'NF' script/template/hostapd.conf | grep -v '#' > hostapd.conf
|
|
awk 'NF' ap.cfg | grep -v '#' >> hostapd.conf
|
|
|
|
sed -i "s/wlan@@/$devName/" load_dhcp.sh
|
|
sed -i "s/wlan@@/$devName/" hostapd.conf
|
|
|
|
chmod 777 load_dhcp.sh
|
|
|
|
#move to right position
|
|
#mv load_dhcp.sh $HOSTPAD_DIR
|
|
#mv hostapd.conf $HOSTPAD_DIR/hostapd/
|
|
|
|
dhcp_config_file="/etc/default/isc-dhcp-server"
|
|
dhcp_config=$(grep "$devName" $dhcp_config_file)
|
|
if [ "$dhcp_config" != "$devName" ]; then
|
|
echo -en "${YELLOW}Config $dhcp_config_file.....${NC}"
|
|
|
|
rm -rf tmp
|
|
sed '/INTERFACE/d' /etc/default/isc-dhcp-server >>tmp
|
|
echo "INTERFACES=\"$devName\"" >>tmp
|
|
rm -rf $dhcp_config_file
|
|
mv tmp /etc/default/isc-dhcp-server
|
|
|
|
echo -e "${YELLOW}OK${NC}"
|
|
fi
|
|
|
|
|
|
dir=$(pwd)
|
|
echo -e "${YELLOW}Wireless Done. ${NC}"
|
|
trap handle_stop INT
|
|
|
|
function version_great() { test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1"; }
|
|
nmcli_version=$(nmcli -v | cut -d ' ' -f 4)
|
|
chk_nmcli_version=0.9.8.999
|
|
|
|
function handle_stop() {
|
|
# popd
|
|
if version_great $nmcli_version $chk_nmcli_version; then
|
|
nmcli radio wifi on
|
|
else
|
|
nmcli nm wifi on
|
|
fi
|
|
|
|
echo -e "${YELLOW}Shutting down AP.${NC}"
|
|
./ap_shutdown.sh
|
|
}
|
|
|
|
if version_great $nmcli_version $chk_nmcli_version; then
|
|
nmcli radio wifi off
|
|
else
|
|
nmcli nm wifi off
|
|
fi
|
|
|
|
sudo rfkill unblock wlan
|
|
|
|
#pushd $HOSTPAD_DIR
|
|
#. ./load_ap.sh
|
|
#$HOSTPAD_DIR/load_dhcp.sh &
|
|
./load_dhcp.sh &
|
|
PID=$!
|
|
wait $PID
|
|
|
|
echo -e "${YELLOW}Load AP...${NC}"
|
|
echo -e "${GREEN}Launch hostapd.${NC}"
|
|
#run hostapd2.0
|
|
#$HOSTPAD_DIR/hostapd -t hostapd.conf
|
|
hostapd -t hostapd.conf
|