wpa_supplicant使用-程序员宅基地

技术标签: wifi  网络  WiFi设置  linux  嵌入式  

1.wpa_supplicant简介

wpa_supplicant是一个连接、配置WIFI的工具,它主要包含wpa_supplicant与wpa_cli两个程序。wpa_supplicant是服务端,wap_cli是客户端,一般情况下使用wpa_cli就可以操作WiFi。但是它不支持所有的驱动,可以浏览wpa_supplicant网站获得它所支持的驱动列表。另外,wpa_supplicant目前只能连接到那些你已经配置好SSID的无线网络,也就是使用前需要配置好wpa_supplicant的配置文件wpa_supplicant.conf
看下wpa_supplicant的help信息

[root@eufy /oem]$ wpa_supplicant -help
wpa_supplicant v2.6
usage:
  wpa_supplicant [-BddhKLqqtvW] [-P<pid file>] [-g<global ctrl>] \
        [-G<group>] \
        -i<ifname> -c<config file> [-C<ctrl>] [-D<driver>] [-p<driver_param>] \
        [-b<br_ifname>] [-e<entropy file>] [-f<debug file>] \
        [-o<override driver>] [-O<override ctrl>] \
        [-N -i<ifname> -c<conf> [-C<ctrl>] [-D<driver>] \
        [-p<driver_param>] [-b<br_ifname>] [-I<config file>] ...]

drivers:
  nl80211 = Linux nl80211/cfg80211
  wext = Linux wireless extensions (generic)
  wired = Wired Ethernet driver
options:
  -b = optional bridge interface name
  -B = run daemon in the background
  -c = Configuration file
  -C = ctrl_interface parameter (only used if -c is not)
  -d = increase debugging verbosity (-dd even more)
  -D = driver name (can be multiple drivers: nl80211,wext)
  -e = entropy file
  -f = log output to debug file instead of stdout
  -g = global ctrl_interface
  -G = global ctrl_interface group
  -h = show this help text
  -i = interface name
  -I = additional configuration file
  -K = include keys (passwords, etc.) in debug output
  -L = show license (BSD)
  -M = start describing new matching interface
  -N = start describing new interface
  -o = override driver parameter for new interfaces
  -O = override ctrl_interface parameter for new interfaces
  -p = driver parameters
  -P = PID file
  -q = decrease debugging verbosity (-qq even less)
  -t = include timestamp in debug messages
  -v = show version
  -W = wait for a control interface monitor before starting
example:
  wpa_supplicant -Dnl80211 -iwlan0 -c/etc/wpa_supplicant.conf

选项详解

选项 说明
-b optional bridge interface name 增加网桥名称
-B run daemon in the background后台执行
-c Configuration file 附加配置文件,即根据配置文件执行操作
-C ctrl_interface parameter (only used if -c is not) 控制网口参数
-i interface name 设定操作的网口
-d increase debugging verbosity (-dd even more)增加调试信息输出
-D driver name (can be multiple drivers: nl80211,wext) 驱动名称
-g global ctrl_interface 全局网口配置
-K include keys (passwords, etc.) in debug output 在debug输出中包含keys
-t include timestamp in debug messages 将各个debug信息前输出时间标签
-h show this help text显示帮助信息
-L show license (GPL and BSD) 显示license
-o override driver parameter for new interfaces 覆盖driver参数
-O override ctrl_interface parameter for new interfaces 覆盖ctrl_interface参数
-p driver parameters 携带驱动参数
-P PID file进程文件
-q decrease debugging verbosity (-qq even less)在debug 中不输出指定参数
-v show version 显示版本信息
-W wait for a control interface monitor before starting 启动前等待控制接口
-N start describing new interface 启动对新接口的描述
-f log output to debug file instead of stdout log的输出文件

wpa_supplicant配置文件编写

wpa_supplicant配置文件wpa_supplicant.conf的可配置选项太多,先了解下常用的配置项。看个例子:

cat wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ap_scan=1
network={
    
	scan_ssid=1
	ssid="mr112"
	psk="123456789"
	key_mgmt=WPA-PSK
}

配置项 说明
ctrl_interface 默认的也是推荐使用的存放套接字的目录,wpa_cli将会在尝试和wpa_supplicant连接时使用它
ap_scan 接入点的扫描和选择
scan_ssid =0不扫描这个通过特定的探测请求帧得到的SSID(默认)=1扫描通过特定探测请求帧得到的SSID(这个可以用于寻找不接受广播的APs或者使用多SSIDs ;这个将会增加扫描延时时间,所以在有必要时才激活此选项)
ssid 无线名称
psk 无线密码
key_mgmt 公认的认证密钥管理协议列表,WPA-PSK 预共享密匙 (这需要‘psk’字段)

另外,如果需要休眠唤醒功能,则加wowlan_triggers=any配置

wpa_suppcliant举例

wpa_supplicant -B -i wlan0 -c /data/cfg/wpa_supplicant.confg -f /tmp/wap.log

2.wpa_cli使用

选项 说明
scan 打开后扫描AP
scan_results或scan_r 显示扫描结果
status 列出目前的联网状态。
list_networks 列出所有备选网络。目前正连接到的网络会标[CURRENT],禁用的网络会标[DISABLE]。
add_network 增加一个备选网络,输出新网络的号码(这个号码替代下文的[network_id])。注意新网络此时是禁用状态。
set_network [network_id] ssid “Your SSID” 设置无线网的名称(SSID)
set_network [network_id] key_mgmt WPA-PSK 设置无线网的加密方式为WPA-PSK/WPA2-PSK
set_network [network_id] psk “Your Password” 设置无线网的PSK密码
enable_network [network_id] 启用网络。启用后如果系统搜索到了这个网络,就会尝试连接。
disable_network [network_id] 禁用网络。
save_config 保存配置。

举例

1.搜索网络
[root@eufy /oem]$ wpa_cli scan
Selected interface 'wlan0'
OK
[root@eufy /oem]$ wpa_cli scan_result
Selected interface 'wlan0'
bssid / frequency / signal level / flags / ssid
2a:47:3d:62:21:fb	2462	-16	[WPA2-PSK-CCMP][ESS]	mr112
64:6e:97:0c:c9:68	2462	-51	[WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP][ESS]	LdRobotAp-2.4
f8:8c:21:67:6b:67	2462	-28	[WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS]	app\xe7\xbb\x84
80:ea:07:81:24:85	2462	-75	[WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP][ESS]	YAKO_2.4G
f8:8c:21:67:6b:69	5785	-32	[WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS]	app\xe7\xbb\x84-5G
74:22:bb:89:0c:34	5180	-38	[WPA2-PSK-CCMP][ESS]	WFW_5G
2c:15:e1:3d:ba:0d	5745	-37	[WPA2-PSK-CCMP][ESS]	ASUS_0B_5G
48:0e:ec:8d:4f:7f	5805	-40	[WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS]	TP-LINK_4F7D
2.查看状态
[root@eufy /oem]$ wpa_cli status
Selected interface 'wlan0'
bssid=2a:47:3d:62:21:fb
freq=2462
ssid=mr112
id=0
mode=station
pairwise_cipher=CCMP
group_cipher=CCMP
key_mgmt=WPA2-PSK
wpa_state=COMPLETED
ip_address=192.168.191.5
address=20:32:33:38:32:72

源码分析

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43982460/article/details/115427018

智能推荐

基于51单片机冰箱温度控制器设计_基于51单片机的智能冰箱控制系统设计-程序员宅基地

文章浏览阅读871次,点赞11次,收藏3次。*单片机设计介绍, 基于51单片机冰箱温度控制器设计。_基于51单片机的智能冰箱控制系统设计

ubuntu创建sftp和ftp服务器及相应的用户管理_ubuntu sftp服务器查看用户和密码-程序员宅基地

文章浏览阅读4.8k次。一、sftp服务器进入root模式(下面的操作默认都是在root用户下)#安装openssh-serverapt-get install -y openssh-server创建sftp的组和用户#创建sftp-users组groupadd sftp-users#创建sftp用户目录alicemkdir /home/alice#创建sftp用户alice,并且绑定其主目..._ubuntu sftp服务器查看用户和密码

关于在simulink中使用s-function后出现State derivatives returned by S-function during flag=1 call must be a rea_state derivatives returned by s-function 'pmsm' in-程序员宅基地

文章浏览阅读5.9k次,点赞9次,收藏16次。解决了在simulink中使用s-function遇到的报错:State derivatives returned by S-function 'demo' in 'test/S-Function' during flag=1 call must be a real vector of length 2 _state derivatives returned by s-function 'pmsm' in 'ipmsm/ipmsm/s-function1

Sublime Text 关闭自动更新 | Mac_mac sublime text 取消更新提示-程序员宅基地

文章浏览阅读3.1k次。1. 打开配置文件Mac 如下图2. 在文件内部添加这段文字,就可以了:"update_check":false _mac sublime text 取消更新提示

Linux系统下DNS配置指南_linux 服务器修改网络dns-程序员宅基地

文章浏览阅读548次,点赞10次,收藏6次。Linux系统下DNS配置指南_linux 服务器修改网络dns

Springboot/java/node/python/php基于springboot+vue手机售后管理系统【2024年毕设】-程序员宅基地

文章浏览阅读779次,点赞19次,收藏24次。springboot微信小程序的小疾病问诊服务系统的设计与实现。springboot基于spring的物业管理系统的设计与实现。springboot基于Java的高校学生请假系统。ssm基于Android的购物商场APP设计与实现。springboot基于微信小程序的智慧校园系统。ssm基于Android的英语词典的设计与开发。ssm基于SSM+Vue的学生实践管理平台开发。ssm基于android的企业员工考勤系统。ssm基于web的暗香小店系统的设计与实现。ssm基于Web的高等学校公费医疗管理系统。

随便推点

MIT 6.824 Lab1 MapReduce实现思路_mitmapreduce实现csdn-程序员宅基地

文章浏览阅读551次,点赞23次,收藏7次。mit6.824的lab1,实现MapReduce_mitmapreduce实现csdn

使用Android studio创建一个简单项目_android studio简单项目-程序员宅基地

文章浏览阅读6.6k次,点赞10次,收藏82次。在刚开始学Android开发时,下载好了Android studio,但是不知道如何下手,现在就通过一个简单的小项目熟悉如何使用这个软件进行Android开发。前提:下载好Android studio并配置好相关环境。首先介绍一下Android开发过程中需要修改的三类文件:位于java包下的各类activity文件:实现了用户与软件的交互,主要为java代码实现。位于res包下的.xml文件:在layout包里的为布局文件,即Android界面显示的视图,而drawable里则放置了某个控件的_android studio简单项目

Bootstrap 弹出框-程序员宅基地

文章浏览阅读3.5k次。一、Bootstrap 弹出框弹出框控件类似于提示框,它在鼠标点击到元素后显示,与提示框不同的是它可以显示更多的内容。注意: 弹出框要写在 jQuery 的初始化代码里: 然后在指定的元素上调用 popover() 方法。1.1 基本弹出框通过向元素添加 data-toggle=“popover” 来来创建弹出框。title 属性的内容为弹出框的标题,data-content 属性..._bootstrap 弹出框

基于Wemos D1 Mini Pro开发板的天气显示器_arduino wemos d1 mini-程序员宅基地

文章浏览阅读226次,点赞2次,收藏3次。本项目设计了一款可以触摸控制的天气显示器。主要由Wemos D1 Mini Pro和TFT显示屏组成,利用Wemos D1 Mini Pro作为设备的主控芯片,发出Wi-Fi信号并接收相应指令,通过调用API将接收到的信息传输到TFT显示屏,TFT显示屏将接收到的信息显示出来。该天气显示器实现对所在地区当前的时间与日期;当日的天气信息,如温度、压力、湿度、降雨量;七天的未来预测等功能的显示。设计采用Wemos D1 Mini Pro,利用API将实时获取的天气信息,通过TFT显示屏显示出来。_arduino wemos d1 mini

Android 双屏异显(兼容android8)_android service 检测是否双屏-程序员宅基地

文章浏览阅读653次。public void initDiffDisplay() { try { DisplayManager displayManager = (DisplayManager) getSystemService(Context.DISPLAY_SERVICE); Display[] presentationDisplays = displayManager.getDisplays(); if (presentationDi._android service 检测是否双屏

【全开源】JAVA婚恋相亲红娘牵线系统源码支持微信小程序+微信公众号+H5+APP-程序员宅基地

文章浏览阅读530次,点赞23次,收藏10次。springboot+mybatisplus+mysql 用户端 uniapp(vue语法)管理后台 vue+elementUi。后台服务 springboot+mybatisplus+mysql。一、我们技术使用JAVA后台服务 前后端分离。管理后台 vue+elementUi。用户端 uniapp(vue语法)适配小程序+H5+公众号。私信客服获取演示地址。私信客服获取演示地址。

推荐文章

热门文章

相关标签