嵌入式wifi开发--设置动态的账户密码信息

在嵌入式平台下当wifi驱动移植好之后,我们可以用Wireless和wpa_spplicant工具进行网络的配置,这两个工具的具体移植方法这里不再讲述!但是此时我们会发现我们上网都是通过wpa_spplicant读取wpa_spplicant.conf文件进行访问的,改文件中包含了wifi所需的账号密码等一些主要信息,在启动前我们需手动配置好,下面我们就讲述一下通过脚本实现动态的获取账号密码信息。

1、原始的wpa_spplicant.conf文件内容:
# WPA-PSK/TKIP

ctrl_interface=/var/run/wpa_supplicant

network={
    ssid="cw"
    scan_ssid=1
    key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE
    pairwise=TKIP CCMP
    group=CCMP TKIP WEP104 WEP40
    psk="12345678"
}

2、首先讲一下wpa_cli这个工具,利用该命令我们可以对wpa_spplicant.conf的内容进行修改,主要涉及下面几行代码:

wpa_cli -iwlan0 add_network <span style="white-space:pre">			</span>  #添加一个网络,此时会返回一个数值,如果是首次执行这句话,一般返回0,下面几行代码中含0就是来自于此
wpa_cli -iwlan0 set_network 0 ssid "${array[0]}"  #修改wifi的账户名,"${array[0]}"保存的是账户信息,这里利用了一个shell的全局变量array[0]
wpa_cli -iwlan0 set_network 0 key_mgmt WPA-PSK    #设置wifi的网络格式
wpa_cli -iwlan0 set_network 0 psk "${array[1]}"   #修改wifi的密码,"${array[1]}"保存的是密码信息,这里也是利用了一个shell的全局变量array[1]

wpa_cli -iwlan0 enable_network 0<span style="white-space:pre">		</span>  #使能改网卡,也就是启用wlan0
sleep 1
wpa_cli -iwlan0 save_config    <span style="white-space:pre">			</span>  #对刚才的配置信息进行保存

注意:上述所说的返回值0,是和你添加几次网卡信息决定的,后面几行代码一定要和这里的值相对应,如果添加n次,在wpa_spplicant.conf中就会有n个network于此相对应!


3、ID.dat,PWD.dat分别存放的是wifi的账号密码,在脚本下通过读取这两个文件把账号密码信息传给array[0],array[1]全局变量,进而执行wpa_cli命令。

4、代码:

connect.sh
#!/bin/bash
declare -a ID
array[0]=value0
array[1]=value1


list0=`cat ID.dat`
for ID in $list0
do
      array[0]=$ID    
#      echo $ID;
#      echo ${array[0]} 
done


declare -a PWD

list1=`cat PWD.dat`
for PWD in $list1
do
      array[1]=$PWD  
#      echo $PWD;
#      echo ${array[1]} 
done

echo **********scanning AP**************
echo ***********************************

echo wlan0 up ...
ifconfig wlan0 up
echo wlan0 up done
sleep 1

echo scanning AP ...
iwlist wlan0 scanning
echo scanning AP done
sleep 1

echo **********end scan*****************
echo ***********************************

echo **********connecting***************
echo ***********************************

echo mkdir ...
mkdir -p /var/run/wpa_supplicant
echo mkdir done
sleep 1

echo run wpa_supplicant ...
wpa_supplicant -Dwext -iwlan0 -c /etc/wpa_supplicant.conf -dd &
echo wpa_supplicant running in background
sleep 1

echo **********end connect**************
echo ***********************************

echo **********setting network**********
echo ***********************************

wpa_cli -iwlan0 add_network 
wpa_cli -iwlan0 set_network 0 ssid "${array[0]}"
wpa_cli -iwlan0 set_network 0 key_mgmt WPA-PSK
wpa_cli -iwlan0 set_network 0 psk "${array[1]}"
wpa_cli -iwlan0 enable_network 0
sleep 1
wpa_cli -iwlan0 save_config

sleep 1

echo **********************************
echo **********end set*****************

echo **********getting ip**************
echo **********************************

echo getting ip ...
udhcpc -i wlan0
sleep 1

echo **********ifconfig****************
echo **********************************
echo the ip is ...
ifconfig

ID.dat
"cw"

PWD.dat
"12345678"

注意:
${array[1]}是双引号,账号密码也都是双引号!如果不能正确设置,很有可能是这种问题!

完!




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值