#!/bin/bash
#this script is used to control wpa_supplicant daemon server.
WPABIN=wpa_supplicant
WIRELESSNAME=wlan0
CONFILE=/etc/wpa_supplicant.conf
PIDFILE=/var/run/udhcpc.wlan0.pid
DHCLIENT=dhcpc
#usage:
#auto_wifi.sh <ssid> <psk>
function usage()
{
echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
echo "Usage:$0 <ssid> <psk>."
echo "./auto_wifi.sh hangtianzhizao tianzhi123"
echo "by smartiot"
echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
}
#generate .conf file.
#here is bug exist,do not keep space or Tab before EOF.
function generateConfFile()
{
cat<<EOF >/etc/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="$1"
psk="$2"
}
EOF
}
#at least need 1 parameter.
if [ $# -lt 1 ];then
usage
exit -1
fi
if [ $# -lt 2 ];then
echo "smartiot:need ssid and psk"
usage
exit -1
fi
#1.關閉udhcpc.wlan0.pid
#1.關閉wpa_supplicant進程
flag=0
pidlist=`ps -ef |grep "wpa_supplicant" |grep -v "grep"|awk '{print $2}'`
udhcpc_pid=`ps -ef |grep "udhcpc" |grep "$WIRELESSNAME" |grep -v "grep"|awk '{print $2}'`
#rm -f /etc/resolv.conf
ifdown $WIRELESSNAME
#echo ">>>>>>>udhcpc_pid: $udhcpc_pid"
if [ "$udhcpc_pid" = "" ]
then
echo "no udhcpc $WIRELESSNAME pid alive"
else
for upid in ${udhcpc_pid}
do
kill -9 $upid
echo "KILL udhcpc.wlan0.pid $upid"
done
fi
# if [ -f "$PIDFILE" ]
# then
# echo "$PIDFILE found."
# PPID=`cat $PIDFILE`
# kill $PPID
# echo "KILL udhcpc.wlan0.pid $PPID"
# else
# echo "$PIDFILE not found."
# fi
# ps -ef |grep wpa_supplicant |grep -v "grep"
# if [ $? -ne 0 ];
if [ "$pidlist" = "" ]
then
echo "no wpa_supplicant pid alive"
#上電啓動後,wpa_supplicant服務不會自動啓動_
else
for pid in ${pidlist}
do
kill -9 $pid
echo "KILL wpa_supplicant $pid"
done
flag=1
fi
#dump out a config file.
generateConfFile $1 $2
echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
cat ${CONFILE}
echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
#start the daemon server.
${WPABIN} -i${WIRELESSNAME} -c${CONFILE} -B
if [ $? -eq 0 ];then
echo "smartiot:start success"
else
echo "smartiot:start failed!"
exit -1
fi
#down wlan && up wlan if
# if [ "$flag" -eq 1 ];
# then
# echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
# echo "ifdown wlan0\r"
# ifdown wlan0
# #echo "sleep 5s\r"
# #sleep 5s
# echo "ifup wlan0\r"
# ifup wlan0
# echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
# fi
udhcpc -b -i wlan0 -p /var/run/udhcpc.wlan0.pid -R
exit 0