zoukankan      html  css  js  c++  java
  • 用shell脚本实现linux系统上wifi模式(STA和soft AP)的转换

    转载请注明出处:http://blog.csdn.net/hellomxj1/

    功能:在linux系统上实现wifi STA与AP功能的转换

    实现成果:1、加入wifipassword账户add_wifi_account。

              2、wifi两种模式启动的脚本wifi_start;

                 3、帮助信息README_WIFI_START;


    详细实现步骤例如以下:

    加入wifipassword账户add_wifi_account

      1 #!/bin/sh                                                                                                                                
      2 
      3 echo "Add Wifi Account ..."
      4 
      5 if [ ! -e /usr/firmware/wifi/wpa_supplicant.conf]
      6 then
      7     echo "There is not wpa_supplicant.conf!!!"
      8     exit
      9 fi
     10     echo network={ >>/etc/wifi/wpa_supplicant.conf
     11     echo ssid="$1" >>/etc/wifi/wpa_supplicant.conf
     12     echo psk="$2" >>/etc/wifi/wpa_supplicant.conf
     13     echo key_mgmt=$3 >>/etc/wifi/wpa_supplicant.conf
     14     echo } >>/etc/wifi/wpa_supplicant.conf
     15 
     16 
     17     echo "ssid="$1""
     18     echo "psk="$2""
     19     echo "key_mgmt=$3"
     20 
     21 
     22 echo "Finshed!"
    ~                    


    该部分主要是实现将账户和password加入到wpa的配置文件。以便于使用sta模式启动能自己主动连接网络。若果该配置文件里有多个账户信息,将会从依次连接,假设当中一个成功。将不会往下运行。


    wifi两种模式启动的脚本wifi_start

    1 #!/bin/sh
      2 
      3 echo "Start wifi ..."
      4 
      5 if [ ! -e /var/run/wpa_supplicant]
      6 then
      7 mkdir -p /var/run/wpa_supplicant
      8 fi
      9 
     10 busybox ifconfig wlan0 up
     11 
     12 ps -fe|grep wpa_supplicant |grep -v grep
     13 
     14 if [ $? -ne 0 ]
     15 then
     16 wpa_supplicant -Dnl80211 -iwlan0 -c/etc/wifi/wpa_supplicant.conf&
     17 fi
     18 
     19 echo "######$1"
     20 
     21 if [ "$1" = "ap" ]
     22 then
     23 
     24     echo "Start wifi AP..."
     25 
     26     if [ ! $# == 2 ]
     27     then
     28         echo "Please input : start-wifi ap 192.168.1.xx(1-19)"
     29         exit
     30     fi
     31 
     32     if [ ! -e /var/lib/misc ]
     33     then
     34     mkdir -p /var/lib/misc
     35     fi
     36 
     37     if [ ! -e /var/lib/misc/udhcpd.leases ]
     38     then
     39     touch /var/lib/misc/udhcpd.leases
     40     fi                                                                                                                                   
     41 
     42     ifconfig wlan0 down
     43 
     44     result=`cat /sys/module/bcmdhd/parameters/firmware_path`
     45 
     46     if [ "$result" != "/usr/firmware/wifi/fw_43341_apsta.bin" ]
     47     then
     48     echo "/usr/firmware/wifi/fw_43341_apsta.bin">/sys/module/bcmdhd/parameters/firmware_path
     49     fi
     50 
     51     ifconfig wlan0 $2 up                                                                                                                 
     52 
     53     echo "Start hostapd ..."
     54 
     55     ps -fe|grep hostapd |grep -v grep
     56 
     57     if [ $? -eq 0 ]
     58     then
     59         ps -ef | grep hostapd | grep -v grep | awk '{print $1}' | sed -e "s/^/kill -9 /g" | sh -
     60     fi
     61 
     62     hostapd /etc/wifi/hostapd.conf&
     63 
     64     echo "Start udhcpd ..."
     65 
     66     ps -fe|grep udhcpd |grep -v grep
     67 
     68     if [ $? -eq 0 ]
     69     then
     70         ps -ef | grep udhcpd | grep -v grep | awk '{print $1}' | sed -e "s/^/kill -9 /g" | sh -
     71     fi
     72 
     73     udhcpd -fS /etc/udhcpd.conf&
     74 
     75     echo "Wifi AP finshed!"
     76 
     77 elif [ "$1" = "sta" ]
     78 then
     79     ifconfig wlan0 down
     80 
     81     result=`cat /sys/module/bcmdhd/parameters/firmware_path`
     82 
     83     if [ "$result" != "/usr/firmware/wifi/fw_43341.bin" ]
     84     then
     85     echo "/usr/firmware/wifi/fw_43341.bin">/sys/module/bcmdhd/parameters/firmware_path
     86     fi
     87 
     88     ifconfig wlan0 up
     89 
     90     udhcpc -i wlan0
     91 
     92 else
     93 
     94     echo "Error!! Please input again!"
     95 
     96 fi
    

     

    这里主要分为两个模块,一个是sta模式的启动直接输入./wifi_start sta;就可以启动。还有一个为soft AP模式直接输入:./wifi_start ap 192.168.2.10;就可以进入soft AP模式,考虑到两种模式的不断转换的问题,我在执行的前期会对进程进行检查。将曾经开启的进程进行关闭,一边本次开启可以正常执行。


    帮助信息README_WIFI_START

      1 <1>Introduction                                                                                                                          
      2 
      3     This document describes how to start wifi,and introduces the function and use methods of add-wifi-account and wifi-start;And add-        wifi-account and wifi-start in the "/etc/init.d" directory.
      4 
      5 <2>How to operate
      6 
      7 First,Add the available WiFi account
      8 
      9     #/etc/init.d/add-wifi-account "JZ_Guest" "#wwwingenic*" "WPA-PSK"
     10 
     11     Notes: "JZ_Guest" is the ssid of the network that you want to connect;
     12            "#wwwingenic* is the password of the network;
     13            " WPA-PSK"  is the encryption method of the network;
     14 
     15 Second,Start wifi
     16 
     17     /*Start wifi with STA model*/
     18 
     19     #/etc/init.d/wifi-start sta
     20 
     21     /*Start wifi with AP model*/
     22 
     23     #/etc/init.d/wifi-start ap 192.168.1.10
     24 
     25     Notes: 192.168.1.10 is ip of newton,you can use ip address from 192.168.1.1 <----> 192.168.1.19
    

    这里主要是我的脚本的使用说明。方便使用;



    时间比較紧。功能的实现可能会有问题,希望能给大家多多给出建议。


  • 相关阅读:
    Hadoop一直处于安全模式(hadoop去掉保护模式)
    日考
    MySQL中文编码
    Mussel使用系列(二):开始写我们的第一个Mussel插件项目
    什么是Mussel
    Mussel使用系列(四):从容器中访问Mussel的插件项目
    Mussel使用系列(三):Mussel插件树的构成及初步使用
    Mussel使用系列(五):插件项目之间的调用
    Mussel使用系列(一):Mussel配置文件演示
    C#委托探索之猫和老鼠
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/7118514.html
Copyright © 2011-2022 走看看