Use shell scripts to convert the wifi mode (STA and soft AP) in linux, wifista
Reprinted please indicate the source: http://blog.csdn.net/hellomxj1/
Function: converts the Wi-Fi STA and AP functions in linux.
Implementation results: 1. Add the wifi password account add_wifi_account;
2. The script wifi_start started in wifi mode;
3. README_WIFI_START;
The specific implementation process is as follows:
Add a wi-fi password account 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!"~
This section is mainly used to add accounts and passwords to the wpa configuration file, so that you can use the sta mode to enable automatic network connection. If the configuration file contains multiple account information, connections are established sequentially. If one of them is successful, it will not be executed.
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
There are mainly two modules. One is the direct input of the sta mode startup. /wifi_start sta; to start the instance. For the other instance, enter :. /wifi_start ap 192.168.2.10; you can enter the soft AP mode. Considering the constant conversion of the two modes, I will check the process in the early stage of execution and close the previously enabled process, when this feature is enabled, it can run normally;
Help 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
Here is the usage instructions of my scripts for ease of use;
The time is tight, and the implementation of the function may be faulty. I hope to give you more suggestions.
How to edit files using shell scripts in linux
1. sed '6d 'yourfile>/tmp/yourfile. tmp & mv-f/tmp/yourfile. tmp yourfile
2. sed '3g 'yourfile
3. sed-n '8s/^ .. \ (... \). */\ 1/P' yourfile
TIPS: How can I import the shell script to a customized linux system and run it to save input?
It seems that a samba, vsftpd, or nfs service needs to be started to be shared. Otherwise, the scp remote copy is used. However, the IP address must be set in advance so that the virtual machine and the real machine can copy the IP address in the same network segment and then directly run the shell script. add the script name to sh in the current directory. If not, check the permission and change the shell script permission.