热门标签 | 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

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



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



推荐阅读
  • Jupyter Notebook多语言环境搭建指南
    本文详细介绍了如何在Linux环境下为Jupyter Notebook配置Python、Python3、R及Go四种编程语言的环境,包括必要的软件安装和配置步骤。 ... [详细]
  • CentOS下ProFTPD的安装与配置指南
    本文详细介绍在CentOS操作系统上安装和配置ProFTPD服务的方法,包括基本配置、安全设置及高级功能的启用。 ... [详细]
  • 本文详细介绍了如何在Oracle VM VirtualBox中实现主机与虚拟机之间的数据交换,包括安装Guest Additions增强功能,以及如何利用这些功能进行文件传输、屏幕调整等操作。 ... [详细]
  • 从理想主义者的内心深处萌发的技术信仰,推动了云原生技术在全球范围内的快速发展。本文将带你深入了解阿里巴巴在开源领域的贡献与成就。 ... [详细]
  • 深入体验Python的高级交互式Shell - IPython
    IPython 是一个增强型的 Python 交互式 Shell,提供了比标准 Python 控制台更为强大的功能,适用于开发和调试过程。它不仅支持直接执行 Linux 命令,还提供了丰富的特性来提高编程效率。 ... [详细]
  • 本文详细介绍了如何搭建一个高可用的MongoDB集群,包括环境准备、用户配置、目录创建、MongoDB安装、配置文件设置、集群组件部署等步骤。特别关注分片、读写分离及负载均衡的实现。 ... [详细]
  • 本文详细介绍了在Linux操作系统上安装和部署MySQL数据库的过程,包括必要的环境准备、安装步骤、配置优化及安全设置等内容。 ... [详细]
  • 本文详细介绍了Linux系统中信号量的相关函数,包括sem_init、sem_wait、sem_post和sem_destroy,解释了它们的功能和使用方法,并提供了示例代码。 ... [详细]
  • 函子(Functor)是函数式编程中的一个重要概念,它不仅是一个特殊的容器,还提供了一种优雅的方式来处理值和函数。本文将详细介绍函子的基本概念及其在函数式编程中的应用,包括如何通过函子控制副作用、处理异常以及进行异步操作。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 本文探讨了如何通过优化 DOM 操作来提升 JavaScript 的性能,包括使用 `createElement` 函数、动画元素、理解重绘事件及处理鼠标滚动事件等关键主题。 ... [详细]
  • 利用 Calcurse 在 Linux 终端高效管理日程与任务
    对于喜爱使用 Linux 终端进行日常操作的系统管理员来说,Calcurse 提供了一种强大的方式来管理日程安排、待办事项及会议。本文将详细介绍如何在 Linux 上安装和使用 Calcurse,帮助用户更有效地组织工作。 ... [详细]
  • 本文详细介绍了如何正确设置Shadowsocks公共代理,包括调整超时设置、检查系统限制、防止滥用及遵守DMCA法规等关键步骤。 ... [详细]
  • 本文将从基础概念入手,详细探讨SpringMVC框架中DispatcherServlet如何通过HandlerMapping进行请求分发,以及其背后的源码实现细节。 ... [详细]
  • 小编给大家分享一下Vue3中如何提高开发效率,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获, ... [详细]
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社区 版权所有