热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

用shell脚本实现linux系统上wifi模式(STA和softAP)的转换

转载请注明出处:http:blog.csdn.nethellomxj1功能:在linux系统上实现wifiSTA与AP功能的转换实现成果:1、添加wifi密码账户add_wifi_accou

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

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

实现成果:1、添加wifi密码账户add_wifi_account;

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

             3、帮助信息README_WIFI_START;


具体实现过程如下:

添加wifi密码账户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!"
~


该部分主要是实现将账户和密码添加到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

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



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



推荐阅读
  • 本文深入探讨了UNIX/Linux系统中的进程间通信(IPC)机制,包括消息传递、同步和共享内存等。详细介绍了管道(Pipe)、有名管道(FIFO)、Posix和System V消息队列、互斥锁与条件变量、读写锁、信号量以及共享内存的使用方法和应用场景。 ... [详细]
  • 主调|大侠_重温C++ ... [详细]
  • 目录一、salt-job管理#job存放数据目录#缓存时间设置#Others二、returns模块配置job数据入库#配置returns返回值信息#mysql安全设置#创建模块相关 ... [详细]
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • 本文介绍如何从JSON格式的文件中提取数据并将其分配给Bash脚本中的变量。我们将探讨具体的命令和工具,帮助你高效地完成这一任务。 ... [详细]
  • Linux环境下C语言实现定时向文件写入当前时间
    本文介绍如何在Linux系统中使用C语言编程,实现在每秒钟向指定文件中写入当前时间戳。通过此示例,读者可以了解基本的文件操作、时间处理以及循环控制。 ... [详细]
  • 对于许多初学者而言,遇到总线错误(bus error)或段错误(segmentation fault/core dump)是极其令人困扰的。本文详细探讨了这两种错误的成因、表现形式及解决方法,并提供了实用的调试技巧。 ... [详细]
  • 本文详细介绍了如何解压并安装MySQL集群压缩包,创建用户和组,初始化数据库,配置环境变量,并启动相关服务。此外,还提供了详细的命令行操作步骤和常见问题的解决方案。 ... [详细]
  • 本文详细介绍了Linux系统中的进程管理函数,涵盖了获取进程ID、用户ID、创建子进程、信号处理等关键操作。通过这些函数,开发者可以更好地控制和管理进程行为。 ... [详细]
  • 采用IKE方式建立IPsec安全隧道
    一、【组网和实验环境】按如上的接口ip先作配置,再作ipsec的相关配置,配置文本见文章最后本文实验采用的交换机是H3C模拟器,下载地址如 ... [详细]
  • 本教程详细介绍了如何使用 TensorFlow 2.0 构建和训练多层感知机(MLP)网络,涵盖回归和分类任务。通过具体示例和代码实现,帮助初学者快速掌握 TensorFlow 的核心概念和操作。 ... [详细]
  • 本文详细介绍了如何在预装Ubuntu系统的笔记本电脑上安装Windows 7。针对没有光驱的情况,提供了通过USB安装的具体方法,并解决了分区、驱动器无法识别等问题。 ... [详细]
  • Linux系统中Java程序Too Many Open Files问题的深入解析与解决方案
    本文详细分析了在Linux环境下运行的Java应用程序中可能出现的“Too many open files”异常现象,探讨其成因及解决方法。该问题通常出现在高并发文件访问或大量网络连接场景下,对系统性能和稳定性有较大影响。 ... [详细]
  • 2018-2019学年第六周《Java数据结构与算法》学习总结
    本文总结了2018-2019学年第六周在《Java数据结构与算法》课程中的学习内容,重点介绍了非线性数据结构——树的相关知识及其应用。 ... [详细]
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
author-avatar
上善若水纯_310
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有