ARM技术论坛
直播中

嵌入式小能手

1年用户 756经验值
擅长:嵌入式技术
私信 关注
[经验]

飞凌嵌入式ElfBoard ELF 1板卡-shell编程入门之使用wifi拨号上网

板卡自带了一个wifi拨号上网的脚本程序。
程序编写
  1. #!/bin/sh
  2. function usage()
  3. {
  4.     echo "Usage: -i  -s  -p "
  5.     echo "eg: ./wifi.sh -i 8723 -s elf -p NONE "
  6.     echo " -i : 8723"
  7.     echo " -s : wifi ssid"
  8.     echo " -p : wifi password or NONE"
  9. }
  10. function parse_args()
  11. {
  12.     while true; do
  13.         case "$1" in
  14.             -i ) wifi=$2;echo wifi $wifi;shift 2 ;;
  15.             -s ) ssid=$2;echo ssid $ssid;shift 2 ;;
  16.             -p ) pasw=$2;echo pasw $pasw;shift 2 ;;
  17.             -h ) usage; exit 1 ;;
  18.             * ) break ;;
  19.         esac
  20.     done
  21. }
  22. if [ $# != 6 ]
  23. then
  24.     usage;
  25.     exit 1;
  26. fi
  27. parse_args $@
  28. if [ -e /etc/wpa_supplicant.conf ]
  29. then
  30.     rm /etc/wpa_supplicant.conf
  31. fi
  32.     echo #PSK/TKIP >> /etc/wpa_supplicant.conf
  33.         echo ctrl_interface=/var/run/wpa_supplicant >>/etc/wpa_supplicant.conf
  34.         echo network={ >>/etc/wpa_supplicant.conf
  35.     echo ssid="$ssid" >>/etc/wpa_supplicant.conf
  36.         echo scan_ssid=1 >>/etc/wpa_supplicant.conf
  37.     if [ $pasw == NONE ]
  38.         then
  39.                 echo key_mgmt=NONE >>/etc/wpa_supplicant.conf
  40.         else
  41.                 echo psk="$pasw" >>/etc/wpa_supplicant.conf
  42.                echo key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE >>/etc/wpa_supplicant.conf
  43.                 echo group=CCMP TKIP WEP104 WEP40 >>/etc/wpa_supplicant.conf
  44.         fi
  45.     echo } >>/etc/wpa_supplicant.conf
  46. ifconfig -a|grep wlan0 |grep -v grep > /dev/null
  47. if [ $? -eq 0 ]
  48. then
  49.         ifconfig wlan0 down > /dev/null
  50. fi
  51. ifconfig -a|grep eth0 |grep -v grep > /dev/null
  52. if [ $? -eq 0 ]
  53. then
  54.         ifconfig eth0 down > /dev/null
  55. fi
  56. ifconfig -a|grep eth1 |grep -v grep > /dev/null
  57. if [ $? -eq 0 ]
  58. then
  59.         ifconfig eth1 down > /dev/null
  60. fi
  61. lsmod|grep 8723du |grep -v grep > /dev/null
  62. if [ $? -eq 0 ]
  63. then
  64.         rmmod 8723du
  65. fi
  66. if [ $wifi == 8723 ]
  67. then
  68. insmod /lib/modules/$(uname -r)/kernel/drivers/net/wireless/realtek/rtl8723DU/8723du.ko > /dev/null
  69. fi
  70. sleep 3
  71. ifconfig wlan0 up
  72. sleep 1
  73. ps -fe|grep wpa_supplicant |grep -v grep > /dev/null
  74. if [ $? -eq 0 ]
  75. then
  76.         kill -9 $(pidof wpa_supplicant) > /dev/null
  77.         rm /var/run/wpa_supplicant -r
  78. fi
  79. if [ $wifi == 8723 ]
  80. then
  81.         wpa_supplicant -Dnl80211 -iwlan0 -c/etc/wpa_supplicant.conf &
  82. fi
  83. sleep 3
  84. udhcpc -i wlan0
  85. echo "Finshed!"
该脚本主要用于配置WiFi网络连接。脚本通过命令行参数 `-i`, `-s`, `-p` 来获取WiFi的相关信息,然后根据这些信息配置 `/etc/wpa_supplicant.conf` 文件,并启动 `wpa_supplicant` 来连接WiFi。接下来的步骤包括使WiFi网络接口起来,检查以前加载的内核模块是否已经加载,如果已经加载则卸载。最后使用 `udhcpc` 命令为分配一个IP地址,并输出“Finished!”来提示脚本执行完毕。
具体步骤如下:
一、定义了两个函数 `usage` 和 `parse_args`,前者用于打印命令的用法,后者用于解析命令行参数。
二、如果输入的参数个数不等于6,则调用 `usage` 打印用法并退出。
三、解析命令行参数。
四、如果 wpa_supplicant.conf 文件存在,则删除该文件。
五、在 wpa_supplicant.conf 文件中添加 WiFi 配置信息。
六、尝试关闭、卸载以前的网络使用的的内核模块。
七、如果是 rtl8723 的WiFi模块,加载新的模块。
八、启动WiFi接口,并启动wpa_supplicant进行WiFi连接。
九、等待一段时间,再使用 `udhcpc` 命令为WiFi网络接口分配IP地址。
十、输出“Finished!”来标识脚本执行完毕。
开发板测试
root@ELF1:~# chmod 777 wifi.sh
root@ELF1:~# ./wifi.sh -i 8723 -s p50 -p xx000628


可以看到wifi脚本连接过程没有问题,下面我们ping一个域名试试。

联网正常。

更多回帖

发帖
×
20
完善资料,
赚取积分