Linux shell腳本實現連接wifi

#!/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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章