• 正文
    • 程序編寫
    • 開發(fā)板測試
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

飛凌嵌入式ElfBoard ELF 1板卡-shell編程入門之使用wifi撥號上網(wǎng)

2024/12/12
928
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

板卡自帶了一個wifi撥號上網(wǎng)的腳本程序。

程序編寫

#!/bin/sh
function usage()
{
    echo "Usage: -i <wifi> -s <ssid> -p <password>"
    echo "eg: ./wifi.sh -i 8723 -s elf -p NONE "
    echo " -i : 8723"
    echo " -s : wifi ssid"
    echo " -p : wifi password or NONE"
}

function parse_args()
{
    while true; do
        case "$1" in
            -i ) wifi=$2;echo wifi $wifi;shift 2 ;;
            -s ) ssid=$2;echo ssid $ssid;shift 2 ;;
            -p ) pasw=$2;echo pasw $pasw;shift 2 ;;
            -h ) usage; exit 1 ;;
            * ) break ;;
        esac
    done
}

if [ $# != 6 ]
then
    usage;
    exit 1;
fi

parse_args $@

if [ -e /etc/wpa_supplicant.conf ]
then
    rm /etc/wpa_supplicant.conf
fi
    echo #PSK/TKIP >> /etc/wpa_supplicant.conf
        echo ctrl_interface=/var/run/wpa_supplicant >>/etc/wpa_supplicant.conf
        echo network={ >>/etc/wpa_supplicant.conf
    echo ssid="$ssid" >>/etc/wpa_supplicant.conf
        echo scan_ssid=1 >>/etc/wpa_supplicant.conf
    if [ $pasw == NONE ]
        then
                echo key_mgmt=NONE >>/etc/wpa_supplicant.conf
        else
                echo psk="$pasw" >>/etc/wpa_supplicant.conf
               echo key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE >>/etc/wpa_supplicant.conf
                echo group=CCMP TKIP WEP104 WEP40 >>/etc/wpa_supplicant.conf
        fi
    echo } >>/etc/wpa_supplicant.conf

ifconfig -a|grep wlan0 |grep -v grep > /dev/null
if [ $? -eq 0 ]
then
        ifconfig wlan0 down > /dev/null
fi

ifconfig -a|grep eth0 |grep -v grep > /dev/null
if [ $? -eq 0 ]
then
        ifconfig eth0 down > /dev/null
fi
ifconfig -a|grep eth1 |grep -v grep > /dev/null
if [ $? -eq 0 ]
then
        ifconfig eth1 down > /dev/null
fi


lsmod|grep 8723du |grep -v grep > /dev/null
if [ $? -eq 0 ]
then
        rmmod 8723du
fi


if [ $wifi == 8723 ]
then
insmod /lib/modules/$(uname -r)/kernel/drivers/net/wireless/realtek/rtl8723DU/8723du.ko > /dev/null
fi

sleep 3
ifconfig wlan0 up
sleep 1

ps -fe|grep wpa_supplicant |grep -v grep > /dev/null
if [ $? -eq 0 ]
then
        kill -9 $(pidof wpa_supplicant) > /dev/null
        rm /var/run/wpa_supplicant -r
fi

if [ $wifi == 8723 ] 
then
        wpa_supplicant -Dnl80211 -iwlan0 -c/etc/wpa_supplicant.conf &
fi

sleep 3
udhcpc -i wlan0
echo "Finshed!"

該腳本主要用于配置WiFi網(wǎng)絡(luò)連接。腳本通過命令行參數(shù) `-i`, `-s`, `-p` 來獲取WiFi的相關(guān)信息,然后根據(jù)這些信息配置 `/etc/wpa_supplicant.conf` 文件,并啟動 `wpa_supplicant` 來連接WiFi。接下來的步驟包括使WiFi網(wǎng)絡(luò)接口起來,檢查以前加載的內(nèi)核模塊是否已經(jīng)加載,如果已經(jīng)加載則卸載。最后使用 `udhcpc` 命令為分配一個IP地址,并輸出“Finished!”來提示腳本執(zhí)行完畢。

具體步驟如下:

一、定義了兩個函數(shù) `usage` 和 `parse_args`,前者用于打印命令的用法,后者用于解析命令行參數(shù)。

二、如果輸入的參數(shù)個數(shù)不等于6,則調(diào)用 `usage` 打印用法并退出。

三、解析命令行參數(shù)。

四、如果 wpa_supplicant.conf 文件存在,則刪除該文件。

五、在 wpa_supplicant.conf 文件中添加 WiFi 配置信息。

六、嘗試關(guān)閉、卸載以前的網(wǎng)絡(luò)使用的的內(nèi)核模塊。

七、如果是 rtl8723 的WiFi模塊,加載新的模塊。

八、啟動WiFi接口,并啟動wpa_supplicant進(jìn)行WiFi連接。

九、等待一段時間,再使用 `udhcpc` 命令為WiFi網(wǎng)絡(luò)接口分配IP地址。

十、輸出“Finished!”來標(biāo)識腳本執(zhí)行完畢。

開發(fā)板測試

root@ELF1:~# chmod 777 wifi.sh

root@ELF1:~# ./wifi.sh -i 8723 -s p50 -p xx000628

可以看到wifi腳本連接過程沒有問題,下面我們ping一個域名試試。

聯(lián)網(wǎng)正常。

飛凌嵌入式

飛凌嵌入式

保定飛凌嵌入式技術(shù)有限公司,創(chuàng)建于2006年,是一家專注嵌入式核心控制系統(tǒng)研發(fā)、設(shè)計和生產(chǎn)的高新技術(shù)企業(yè),是國內(nèi)較早專業(yè)從事嵌入式技術(shù)的企業(yè)之一。 經(jīng)過十幾年的發(fā)展與積累,公司擁有業(yè)內(nèi)優(yōu)秀的軟硬件研發(fā)團(tuán)隊,在北京及保定建立兩大研發(fā)基地,在蘇州、深圳設(shè)有華東、華南技術(shù)服務(wù)中心,并在北美、歐洲以及亞太等其他國家和地區(qū)擁有國際業(yè)務(wù)網(wǎng)絡(luò)。公司研發(fā)的智能設(shè)備核心平臺廣泛應(yīng)用于物聯(lián)網(wǎng)、工控、軌道交通、醫(yī)療、電力、商業(yè)電子、智能家居、安防、機(jī)器人、環(huán)境監(jiān)測等諸多領(lǐng)域。

保定飛凌嵌入式技術(shù)有限公司,創(chuàng)建于2006年,是一家專注嵌入式核心控制系統(tǒng)研發(fā)、設(shè)計和生產(chǎn)的高新技術(shù)企業(yè),是國內(nèi)較早專業(yè)從事嵌入式技術(shù)的企業(yè)之一。 經(jīng)過十幾年的發(fā)展與積累,公司擁有業(yè)內(nèi)優(yōu)秀的軟硬件研發(fā)團(tuán)隊,在北京及保定建立兩大研發(fā)基地,在蘇州、深圳設(shè)有華東、華南技術(shù)服務(wù)中心,并在北美、歐洲以及亞太等其他國家和地區(qū)擁有國際業(yè)務(wù)網(wǎng)絡(luò)。公司研發(fā)的智能設(shè)備核心平臺廣泛應(yīng)用于物聯(lián)網(wǎng)、工控、軌道交通、醫(yī)療、電力、商業(yè)電子、智能家居、安防、機(jī)器人、環(huán)境監(jiān)測等諸多領(lǐng)域。收起

查看更多

相關(guān)推薦