zoukankan      html  css  js  c++  java
  • am335x WG209 wifi模块自动配置的脚本

    上一篇博客讲了如何移植wifi模块,这一篇是上一篇的延续。

    当设备已经移植了wifi模块后,还需要进行一系列的操作才可以使用wifi。在输入指令的时候,客户可能会输错指令,或者步骤出错,总之不确定因素比较多,且比较浪费时间,所以我写了一个脚本来帮助客户执行这些操作。

    #!/bin/sh
    
    ifconfig wlan0 down  
    
    file="mt7601u.ko"
    
    #定义两个变量来接收终端输入的信息,n是接收wifi名称的,k是接收wifi密码的 n k

    #定义两个temp,用来存放wpa_supplicant的文本内容,temp1中wifi名称和密码是在开始执行脚本的时候就输入的,temp2中的wifi名称和密码是脚本执行过程中输入的 temp1="ctrl_interface=/var/run/wpa_supplicant network={ ssid="$1" key_mgmt=WPA-PSK psk="$2" }" temp2="ctrl_interface=/var/run/wpa_supplicant network={ ssid=""$n"" key_mgmt=WPA-PSK psk=""$k"" }"
    #如果没有mt7601u.ko这个文件,接下来的工作都没办法展开,所以应该报错并退出
    #如果有这个文件(模块),那么就加载这个模块 if [ ! -f "$file" ]; then echo "Can't find this file:$file"
         exit 0 else echo "This file:$file is existing" insmod $file fi
    #查看一下是否加载成功,这一步可有可无 cat /proc/net/wireless
    #查看是否有"/var/run/wpa_supplicant"这个这个目录,如果没有,就创建一个 if [ ! -d "/var/run/wpa_supplicant" ]; then mkdir /var/run/wpa_supplicant fi #查看是否有"/etc/wpa_supplicant.conf"这个文件,这个文件中记录了wifi名称和密码,系统从该文件中获取wifi名称和密码
    #如果没有这个文件,而且执行脚本的时候没有输入两个参数(wifi名称和密码),就创建这个文件,并且询问客户wifi名称和密码,完善文本的内容
    #如果没有这个文件,但是执行脚本的时候已经输入了两个参数(wifi名称和密码),就创建这个文件,并且根据这两个参数完善文本的内容
    if [ ! -f "/etc/wpa_supplicant.conf" ]; then if [ "$#" -ne 2 ]; then echo "please input two parameters:the first paramter is wifi namm e , and the second parameter is wifi key" echo -n "wifi name:" read name n="$name" echo -n "wifi key:" read key k="$key" touch /etc/wpa_supplicant.conf echo "$temp2" > /etc/wpa_supplicant.conf cat /etc/wpa_supplicant.conf else touch /etc/wpa_supplicant.conf echo "$temp1" > /etc/wpa_supplicant.conf cat /etc/wpa_supplicant.conf fi else
    #如果已经有"wpa_supplicant.conf"这个文件,但是执行脚本的时候也输入了wifi名称和密码,说明要修改wifi的名称和密码,那么就先删除原来的文件,再创建一个同名称的文件,完善文本内容。应该有更简单的方法,直接把其中的文本替换掉
    #如果已经有"wpa_supplicant.conf"这个文件,但是执行脚本的时候没有带参数,那么默认还是原来的文本
    #如果已经有"wpa_supplicant.conf"这个文件,但是执行脚本的时候输入参数个数不正确,重新询问用户名称和密码,完善文本内容 if [ "$#" -eq 2 ]; then rm /etc/wpa_supplicant.conf touch /etc/wpa_supplicant.conf echo "$temp1" > /etc/wpa_supplicant.conf cat /etc/wpa_supplicant.conf elif [ "$#" -eq 0 ];then echo "The file:wpa_supplicant.conf is exist" else echo "Please input two correct parameters to change the wifi namm e and password" echo -n "wifi name:" read name n="$name" echo -n "wifi key:" read key k="$key" touch /etc/wpa_supplicant.conf echo "$temp2" > /etc/wpa_supplicant.conf cat /etc/wpa_supplicant.conf fi fi #必须等待一定时间,不然文本中的wifi名称和密码会出错,没有正确写入,可能是空的 sleep 1
    #打开wlan0 ifconfig wlan0 up sleep 1
    #查看wlan0是否打开成功 ifconfig
    #初始化wpa_supplicant wpa_supplicant -B -c /etc/wpa_supplicant.conf -i wlan0 sleep 1
    #自动获取ip udhcpc -i wlan0

      经过测试,可以实现功能,执行完脚本后,就可以ping www.baidu.com 了。

    但是有一个问题,板子上电后第一次执行这个脚本后,wifi名称和密码就固定了,如果不重启板子的话,没办法用这个脚本修改wifi名称和密码,即使wpa_supplicant.conf中的内容修改成功了,系统还是连着原来的wifi,除非是重启后再执行这个脚本。

    我猜测应该是板子上电后,第一次执行脚本时系统从这个文件中读取了wifi名称密码后,后面再执行这个脚本,就没有再次读取了。

    所以要做到不需要重启也可以修改wifi名称和密码,应该是要研究怎么做才能让系统再次从wpa_supplicant.conf文件中读取wifi名称和密码

  • 相关阅读:
    第二阶段冲刺记录八
    用户体验评价
    找水王
    第二阶段冲刺记录七
    第二阶段冲刺记录六
    第14周学习进度
    第二阶段冲刺记录五
    第二阶段冲刺记录四
    第一阶段意见评论
    IP协议号大全
  • 原文地址:https://www.cnblogs.com/young-dalong/p/15243590.html
Copyright © 2011-2022 走看看