本文主要学习ap-hotspot和create_ap脚本,总结了一下WIFI热点创建脚本的思路,另外记录一些shell学习知识点。

一、Linux环境创建WIFI热点脚本思路

1、参数处理

一个好的脚本,必须要考虑各类参数,就WIFI热点而言,频率、信道、SSID、密码、无线网卡名称、IP地址,等,都是必须要考虑的参数。下面参考create_ap脚本给出示例:

        -c)shiftCHANNEL="$1"shift;;-g)shiftGATEWAY="$1"shift;;-i)shiftINTERFACE_WLAN="$1"shift;;

2、检查无线网卡是否可正常工作

除了要判断无线网卡设备是否存在,还要判断其是否支持AP模式。另外还要判断是否作为STA连接其它AP。函数示例如下:

is_wifi_interface() {which iw > /dev/null 2>&1 && iw dev $1 info > /dev/null 2>&1 && return 0if which iwconfig > /dev/null 2>&1 && iwconfig $1 > /dev/null 2>&1; thenUSE_IWCONFIG=1return 0fireturn 1
}check_supported() {
# Check if the wireless card supports Access Point mode. This script won't work if it doesn't support it
if [[ ! $(iw list 2>&1 | grep -A6 "Supported interface modes" | grep AP$) ]]; thenshow_err "Your wireless card or driver does not support Access Point mode"exit 1
fi
}check_network() {
# Check if Wireless is disabled
if [[ $(iwconfig "$INTERFACE_WLAN" 2>&1 | grep "Tx-Power=off") ]]; thenshow_err "WiFi is disabled, please enable WiFi before running this script"exit 1
# Check if Wireless is enabled, but connected to a network
elif [[ ! $(iwconfig "$INTERFACE_WLAN" 2>&1 | grep "ESSID:off/any") \&& $(iwconfig "$INTERFACE_WLAN" 2>&1 | grep "ESSID:") ]]; thenshow_err "Please disconnect WiFi before proceeding"exit 1
fi
}

3、组装配置文件hostapd.conf

hostapd.conf是hostapd进程所需要的配置文件,里面包括了无线网卡名称、SSID、密码、信道等参数。示例如下:

cat <<EOF | tee $CONFDIR/hostapd.conf  > /dev/null 2>&1
beacon_int=100
interface=$INTERFACE_WLAN
driver=${DRIVER}
ssid=$SSID_NEW
channel=${CHANNEL}
max_num_sta=${MAX_STA}
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=$HIDDEN
wpa=2
wpa_passphrase=$WPAPASS
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
EOF

由于前面已经有文章对参数做了简单的介绍,这里就不展开讨论了。

4、组装配置文件dnsmasq.conf

dhcp功能使用dnsmasq程序实现,它依赖于dnsmasq.conf配置,文件根据参数(无线网卡名称、dhcp范围,等)来组装,示例:

cat <<EOF | tee $CONFDIR/dnsmasq.conf  > /dev/null 2>&1
# Bind to only one interface
bind-interfaces
# Choose interface for binding
interface=$INTERFACE_WLAN
# Specify range of IP addresses for DHCP leases
dhcp-range=$DHCP_RANGE,12h
#INTERFACE_NET=$INTERFACE_NET
EOF

实际生成的dnsmasq.conf文件示例如下:

# Bind to only one interface
bind-interfaces
# Choose interface for binding
interface=wlan0
# Specify range of IP addresses for DHCP leases
dhcp-range=192.168.250.1,192.168.250.200,255.255.255.0,12h

5、设置无线网卡IP

在调试中发现有时候运行dnsmasq不成功,老是提示wlan0不存在。后来在运行dnsmasq之前设置IP,就没有再发生过了。设置无线网卡IP命令十分简单,示例如下:

ifconfig "$INTERFACE_WLAN" $GATEWAY 2>&1

6、开启DHCP

执行如下命令:

dnsmasq -C $CONFDIR/dnsmasq.conf  -x $CONFDIR/dnsmasq.pid -l $CONFDIR/dnsmasq.leases 2>&1

-C后面指定参数文件,如果不指定,将默认使用/etc/dnsmasq.conf文件。

7、运行hostapd进程

执行如下命令:

hostapd -B $HOSTAPD_DEBUG_ARGS $CONFDIR/hostapd.conf -f "$logfile"

-B表示以守护进程方式在后台运行。如果不指定配置文件,将使用默认的/etc/hostapd/hostapd.conf文件。

8、其它说明

将无线网卡MAC地址最后三个字节添加到SSID中,代码如下:

        WLAN_MAC=$(get_macaddr "$INTERFACE_WLAN")LAST3BYTES=`echo "${WLAN_MAC}" | awk -F ':' '{print toupper($4) toupper($5) toupper($6)}'`SSID_NEW=${SSID_NEW}_$LAST3BYTES

首先调用get_macaddr获取到MAC地址,然后使用awk提取到最后三个字节,并转换成大写字母形式。比如当前所用的无线网卡MAC为:4C:41:54:45:4C:45,SSID默认为TESTWIFI,则最后的SSID变成TESTWIFI_454C45。做此步骤,是为了防止多个WIFI热点使用同一SSID的情况出现。

其它细节如使能转发,设置NAT,等,就不一一列出了。

二、SHELL知识

变量包含变量的用法:

CONFDIR=/tmp/ap-hotspot.${INTERFACE_WLAN}.conf
logfile="${CONFDIR}/hostapd.log"
pidfile="${CONFDIR}/hotspot.pid"

将参数配置组合,并输出到文件:

cat <<EOF | tee $CONFDIR/hostapd.conf  > /dev/null 2>&1
beacon_int=100
interface=$INTERFACE_WLAN
driver=${DRIVER}
ssid=$SSID_NEW
channel=${CHANNEL}
max_num_sta=${MAX_STA}
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=$HIDDEN
wpa=2
wpa_passphrase=$WPAPASS
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
EOF

接上,追加到同一文件,多行语句使用,注意追加为“>>”):

if [[ -n "$COUNTRY" ]]; thencat << EOF >> $hotspotconfigcountry_code=${COUNTRY}ieee80211d=1ieee80211h=1EOF
fi

再接上,也是追加到同一文件,但只追加一行语句,直接使用用“>>”:

if [[ $FREQ_BAND == 2.4 ]]; thenecho "hw_mode=g" >> $CONFDIR/hostapd.conf
elseecho "hw_mode=a" >> $CONFDIR/hostapd.conf
fi

本文参考如下程序,荣耀归于原作者。

ap-hotspot:https://github.com/hotice/AP-Hotspot

create_ap:https://github.com/oblique/create_ap.git

李迟 2016.7.24 周日

一个WIFI热点的脚本思路,顺记shell知识相关推荐

  1. 如何把自己的笔记本做成一个wifi热点共享网络

    在做android的时候,我们可能会用到web service 在myeclipse上发布一个web service服务,在手机上调用这个服务操作数据库,但是在模拟器上运行成功,但是在真机上就会显示程 ...

  2. 使用树莓派3B+ 制作一个属于自己的无线AP 无线路由器 一个Wi-Fi热点

    前提条件: 硬件准备: 1.树莓派3(选择因为它有一个以太网端口和一个内置的Wi-Fi连接). 2.树莓派的电源. 3.一张至少8GB的MicroSD卡. 4. 一条RJ45网线 软件: 5. Ras ...

  3. Window设置Wifi热点的脚本

    把下面的脚本设置为name.bat  批处理文件,每次开启或关闭热点的时候双击输入相应的数字,省去了每次都打命令的麻烦. @echo off path=c:\windows\system32echo ...

  4. Linux 开发板4G转WiFi热点 手机连接热点上网(一 思路)

    很多时候我们需要一个这样的设备,建立一个wifi热点通过4G模块的流量进行上网. 为此这里记录自己实现它的经历. 为了达到目的,需要做下面两大部分: 1.4G模块的联网. 2.WiFi模块的AP热点建 ...

  5. ubuntu下发射wifi热点

    为了能尽早摆脱windows系统,不得不进行ubuntu下的wifi热点创建的探索.根据网上许多帖子并不断进行试验,终于得到一种较为简单的wifi热点创建方法.网上在ubuntu下发射wifi热点的方 ...

  6. 树莓派3 有线静态路由设置_配置树莓派为wifi热点(AP模式)

    该功能主要用于搭建一个小型的的网络,使得连接至热点的各个设备可以进行通信,用于构建物联网系统(如智能家居)或是无线控制指定设备.另外这一网络也是独立的,并未启用NAT连接至互联网,具有一定的安全性也为 ...

  7. wifi共享大师电脑版_手机也能给电脑上网!WiFi热点已经out了,蓝牙USB线也能共享网络...

    Hello大家好,我是兼容机之家的小牛! 现如今,移动办公已经成为了一件极其平常的事情,甚至从某种程度来说,越来越多的人依赖于移动办公.外派出差.在咖啡厅等公共场所,要想随时随地办公娱乐,便利的网络服 ...

  8. win7建立wifi热点

    有一些路由器没有wifi功能的, 咱们电脑只能使用网线上网,而手机没法接网线,这时就可以用接网线的电脑建立一个wifi热点,使手机能用wifi上网 1.以管理员权限执行这条命令 netsh wlan ...

  9. 1970“变种”bug连WiFi热点iOS设备会变砖?

    据悉,该漏洞和此前"1970"的bug有关系,但不完全一样. 威锋网讯,你还记得将 iOS 设备系统时间调至 1970.1.1 会让设备变砖的 bug 么?尽管苹果在 iOS 9. ...

最新文章

  1. 转:在线框架引用 bootstrap/jq/jqmobile/css框架
  2. 安全与隐私没有允许任何来源选项
  3. Windows XP 环境下安装 Apache HTTP Server 2.2.8
  4. 洛谷——P2094 运输
  5. 【springboot】模板路径、静态资源路径、WebRoot的本地路径
  6. jQuery—淘宝精品服饰案例
  7. 国家开放大学2021春1080工程数学(本)题目
  8. pythonwhile循环怎么修改数据类型_python开发学习day05 (while循环; for循环; 数字类型操作)...
  9. 模拟导入系统通讯录5000+手机号 校验大量数据处理
  10. java实现n选m组合数_求组合数m_n
  11. 3D VR卡镜的使用方法
  12. 异贝,通过移动互联网技术,为中小微实体企业联盟、线上链接、线上线下自定义营销方案推送。案例28
  13. 运动控制第一篇之直流电动机建模
  14. 面试必问的 Redis:数据结构和基础概念
  15. 使用PopWindow时距离边界有间隙的解决办法
  16. Java之Joda工具包处理时间的7点总结分享
  17. ElasticSearch常用搜索命令整理(长期更新...)
  18. 【毕业设计】深度学习人脸性别年龄识别系统 - python
  19. Prettier的使用
  20. php微信公众号支付实例教程,php微信支付之公众号支付功能

热门文章

  1. 巴菲特发布2022年致股东公开信:盛赞苹果CEO
  2. 三星成功开发LPDDR5X DRAM 将扩大超高速数据服务市场
  3. 搜狐创始人张朝阳操起“老本行”:居然开物理课了
  4. 全国唯一高校!武汉大学首开鸿蒙系统课程
  5. 京东国际宣布国际超模刘雯担任品牌代言人
  6. 董明珠谈接班人标准:不看亲属、朋友关系,只看一点
  7. 十大下班最晚城市,四个在广东
  8. iPhone 12可能还有4G版,售价香到不行!
  9. 拼多多上线直播、火车票业务引关注,回应:仅是两个服务插件
  10. 何小鹏发文力挺李斌:2019年最惨的人