news 2026/9/29 21:53:19

飞凌嵌入式ElfBoard-Shell编程应用实例-使用WiFi拨号上网

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
飞凌嵌入式ElfBoard-Shell编程应用实例-使用WiFi拨号上网

板卡自带了一个wifi拨号上网的脚本程序。

程序编写

#!/bin/sh

cnt1=`ps aux | grep hostapd | grep -v grep | wc -l`

#计算正在运行的 hostapd 进程的数量

if [ "$cnt1" != "0" ];then

killall hostapd > /dev/null

fi

#如果 hostapd 进程的数量不为零(即有进程在运行),则停止所有 hostapd 进程

ifconfig uap0 down

function usage()

{

echo "Usage: -i <wifi> -s <ssid> -p <password>"

echo "eg: ./wifi.sh -i mlan0 -s elf -p NONE "

echo " -i : mlan0 or mlan1"

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

}

#定义一个函数 parse_args,用于解析传入的命令行参数,并根据参数设置对应的变量

if [ $# != 6 ]

then

usage;

exit 1;

fi

#检查传入的参数数量是否为6(包括脚本名称在内)。如果不是,则输出使用说明并退出

parse_args $@

#调用 parse_args 函数来解析命令行参数

if [ -e /etc/wpa_supplicant.conf ]

then

rm /etc/wpa_supplicant.conf

fi

#如果 /etc/wpa_supplicant.conf 文件存在,则删除它

echo \#PSK/TKIP >> /etc/wpa_supplicant.conf

echo ctrl_interface=/var/run/wpa_supplicant >>/etc/wpa_supplicant.conf

echo ctrl_interface_group=0 >>/etc/wpa_supplicant.conf

echo update_config=1 >>/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

#创建新的 /etc/wpa_supplicant.conf 配置文件,配置文件包括网络的基本设置、SSID 和#密码等

ifconfig -a|grep mlan0 |grep -v grep > /dev/null

if [ $? -eq 0 ]

then

ifconfig mlan0 down > /dev/null

fi

#检查 mlan0 网络接口是否存在,如果存在,则关闭它

ifconfig -a|grep mlan1 |grep -v grep > /dev/null

if [ $? -eq 0 ]

then

ifconfig mlan1 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

ifconfig -a|grep usb0 |grep -v grep > /dev/null

if [ $? -eq 0 ]

then

ifconfig usb0 down > /dev/null

fi

ps -fe|grep wpa_supplicant |grep -v grep > /dev/null

if [ $? -eq 0 ]

then

kill -9 $(pidof wpa_supplicant)

fi

#查找是否有wpa_supplicant进程运行,如果有则kill掉

sleep 1

ifconfig $wifi up > /dev/null

sleep 1

#启动$wifi接口

(wpa_supplicant -Dnl80211,wext -i$wifi -c/etc/wpa_supplicant.conf >/dev/null) &

echo "waiting..."

sleep 3

wpa_cli -i$wifi status |grep COMPLETED |grep -v grep >/dev/null

if [ $? -eq 0 ]

then

udhcpc -i $wifi

echo "Finshed!"

else

echo "try to connect again..."

sleep 3

wpa_cli -i$wifi status |grep COMPLETED |grep -v grep >/dev/null

if [ $? -eq 0 ]

then

udhcpc -i $wifi

echo "nameserver 114.114.114.114" > /etc/resolv.conf

echo "Finshed!"

else

echo "************************************************"

echo "connect faild,please check the passward and ssid"

kill -9 $(pidof wpa_supplicant)

exit 1

fi

fi

#尝试连接Wi-Fi网络并获取IP地址,若失败则重新尝试,最终若连接仍失败则输出错误#信息并终止wpa_supplicant进程

该脚本主要用于配置WiFi网络连接。脚本通过命令行参数 `-i`, `-s`, `-p` 来获取WiFi的相关信息,然后根据这些信息配置 `/etc/wpa_supplicant.conf` 文件,并启动 `wpa_supplicant` 来连接WiFi。接下来的步骤包括使WiFi网络接口起来,使用wpa_cli确认连接是否成功。成功后使用 udhcpc 获取 IP 地址。如果连接失败,则输出错误信息,并尝试重新连接。

具体步骤如下:

1.检查并终止hostapd进程。如果hostapd正在运行,则使用killall命令终止它。

2.关闭uap0接口。

3.定义usage和parse_args函数。usage函数提供了脚本的使用说明,parse_args函数解析命令行参数,如Wi-Fi接口(-i)、SSID(-s)和密码(-p)。

4.检查参数个数。吐过参数数量不等于6,则调用usage函数并退出。

5.生成wpa_supplicant.conf 配置文件。删除旧的配置文件(如果存在),然后创建新的配置文件,写入 SSID 和密码等信息。

6.关闭其他网络接口。确保 mlan0、mlan1、eth0、eth1 和 usb0 接口都被关闭。

7.终止 wpa_supplicant 进程。如果 wpa_supplicant 进程正在运行,则杀死它。

8.配置并启动 wpa_supplicant。启动 wpa_supplicant 以连接到指定的 Wi-Fi 网络。

9.检查连接状态并获取 IP 地址。使用 wpa_cli 检查连接状态,如果连接成功,则使用 udhcpc 获取 IP 地址。如果连接失败,则再次尝试并最终报告失败。

开发板测试

root@ELF2:~#chmod 777 wifi.sh

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/29 21:53:14

AI写作检测误判?我花3天梳理的高校内容场景避坑方案

上周组里承接的学生学术内容辅助系统上线前灰度&#xff0c;连续一周收到测试反馈说30%以上的人工撰写实验报告被打了高风险标记。当时第一反应是AI写作检测的分类阈值是不是设高了&#xff0c;翻后台看配置是默认的0.7&#xff0c;同套引擎之前在别的内容场景跑了大半年都没出…

作者头像 李华
网站建设 2026/9/29 21:52:11

无需复杂环境,手把手教你部署 OpenClaw 本地 AI 数字员工

Windows 部署 OpenClaw 教程&#xff5c;快速搭建本地 AI 智能体&#xff0c;避开繁琐环境配置 核心亮点&#xff1a;零代码门槛&#xff5c;全程可视化&#xff5c;不用手动配置运行环境&#xff5c;整合内置各类依赖&#xff5c;28 万 Tokens 额度 Windows 版本 3.1.0 下载地…

作者头像 李华
网站建设 2026/9/29 21:49:59

智慧工地人脸识别系统:不止刷脸打卡,重新定义施工现场人员管理

标签&#xff1a;#智慧工地 #人脸识别 #建筑实名制 #人员安全管理 #大建安摘要&#xff1a;人脸识别是智慧工地最基础也最重要的模块&#xff0c;很多人简单理解为闸机刷脸打卡。本文从合规、安全、劳务纠纷、特殊工况、数据价值多个维度&#xff0c;解析人脸识别系统在真实工程…

作者头像 李华
网站建设 2026/9/29 21:49:58

德思特数字衰减器参数详解:0-120dB衰减范围、0.1dB步进与USB控制

在5G NR终端测试、Wi-Fi 6E抗干扰验证、毫米波射频链路调试、车规级通信系统可靠性测试等场景中&#xff0c;数字衰减器作为信号链路的核心调控设备&#xff0c;其参数精度直接决定了整个测试流程的结果可信度。德思特数字衰减器的衰减范围和精度是多少&#xff1f;支持USB控制…

作者头像 李华