转载请注明出处: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

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

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

linux wifi shell,用shell脚本实现linux系统上wifi模式(STA和soft AP)的转换相关推荐

  1. 安卓修改wifi已停用_手机连不上wifi显示已保存怎么回事【原因介绍】

    问:为什么手机连不上wifi显示已保存?手机在连接WiFi的时候,WiFi显示已保存,手机连接不上wifi信号.请问这是什么原因引起的,应该怎么解决这个问题. 答:如果手机连接wifi时,显示已保存, ...

  2. linux新建备份数据库的脚本文件,Linux下shell脚本:自动每日备份网站文件和数据库上传FTP空间...

    前言 服务器.vps,难免会遇到各种问题,丢失数据,则必然痛心疾首啊!!! 数据无价,so建议养成定期备份的习惯!而且,要多备份几份,本地.网盘.FTP空间等,都多保存几份! 这里,就为大家带来一个l ...

  3. Linux主备网卡检测脚本,检测linux eth0网卡带宽的脚本

    摘要 腾兴网为您分享:检测linux eth0网卡带宽的脚本,掌上看家,有图相册,银行帮,央视影音等软件知识,以及点卷刷取器,电池损耗检测,高手电竞,五杀,求索画室,potplayer剪辑视频,玉米豆 ...

  4. python远程执行shell 防止注入脚本_解决 window 上python远程执行shell paramiko 下令 Permission denied...

    1. 若是程序是在 Linux远程执行 , 那么遇到某些下令是不需要 再输入密码的 但若是 python 是在内陆 , 用  paramiko包 远程ssh登录执行下令 , 就会遇到需要输入密码 2. ...

  5. 在linux搭建wiki教程,在Ubuntu 16.04系统上安装WikkaWiki

    一.WikkaWiki介绍 WikkaWiki是一个灵活的.兼容标准的.轻量级的.平台独立的开源Wiki引擎,它使用PHP语言开发,后端存储采用了MySQL数据库.WikkaWiki的设计目标是速度快 ...

  6. 连上wifi设置里显示未连接服务器,连上wifi没网如何解决_为什么连接到wifi却上不了网-win7之家...

    很多小伙伴都喜欢连接wifi来上网,可是最近有用户遇到这样一个问题,就是手机和电脑连上wifi之后,显示已连接,可是却没网,导致无法上网,为什么连接到wifi却上不了网呢?经过分析可能是路由器联网不成 ...

  7. 电视机wifi显示服务器未连接,为什么电视连上wifi却用不了 电视连上wifi解决方法介绍【图文详解】...

    随着科技发展越来越迅速了,很多电子产品以及 家电 设备功能变得越来越多了.尤其是电视的功能变化的最为明显.之前的电视之内看基本的节目,而现在电视的种类也是非常的多的,不但可以看电视,而且还可以上网.而 ...

  8. linux init.d添加启动脚本 ln,linux编写可运行的shell脚本并在其他目录创建ln连接与设置开机启动...

    ln :创建连接文件 - 默认创建的是硬连接,好比复制 ,但是两个文件会同步 命令:ln ./java/android/aa.txt  aaa - s :创建的是软连接变为指向(类似于windows的 ...

  9. linux 3g拨号 option.c 脚本,嵌入式Linux系统实现3G网卡拨号

    嵌入式Linux系统实现3G网卡拨号 http://blog.chinaunix.net/uid-9525959-id-3998519.htmlhttp://hi.baidu.com/backtrac ...

最新文章

  1. wamp如何更改网站根目录DocumentRoot
  2. 生成tfreocrds
  3. MATLAB中line函数的用法
  4. lunix mysql 8小时_MySQL 8.0 首个自适应参数横空出世
  5. ORACLE导出导入意外终止导致 ORACLE initialization or shutdown in progress 问题解决
  6. html如何设置轮动,手把手教你构建轮动策略
  7. fcpx调整图层_【FCPX萌新系列】新手常遇到的4个基础调色问题
  8. vue中用table_element-ui中的 table 组件在vue中的使用
  9. python标准库——sys模块
  10. MySQL数据库的导入和导出
  11. 4.PCIe协议分析2-PIO XAPP1052 XDMA三者联系和区别详谈
  12. FreeCAD源码分析:Sketcher模块
  13. 老王出品:一文读懂证券业第三方存管和证券托管模式
  14. web开发经典,jquery修改style属性display
  15. Windows 10 下载(1)
  16. 小白IT:从0~明白带你体验python中做上帝感觉--一切皆对象,处处是多态——面向对象
  17. Zed Shaw:一位老程序员的建议
  18. 《被讨厌的勇气》--读后感
  19. TCP三次握手的原因
  20. 2D Toolkit官方教程翻译

热门文章

  1. es日期format_es-sql – 版本5.6.3 – date_format 查询时间格式化使用说明
  2. 一、卫星导航定位系统基础(1)
  3. 一个走偏了的机械男——从机械专业转到计算机我都经历了哪些?
  4. 监控任务是否超时,超时则结束任务
  5. jQuery源码分析之$.inArray()函数
  6. mac卸载python3.6_mac 卸载自己安装python和brew卸载python
  7. 【vue H5微信登录】
  8. 关于 Redis 缓存的几道典型面试题!
  9. php视频设置背景音乐,给视频添加背景音乐-视频配乐详细步骤
  10. 实木家具选什么性价比高