简介

wpa_supplicant是一个连接、配置WiFi的工具,它主要包含wpa_supplicant与wpa_cli两个程序。 可以通过wpa_cli来进行WiFi的配置与连接,前提要保证wpa_supplicant正常启动

相当于wpa_supplicant 是服务端,wpa_cli 是客户端。

安装

wpa_supplicant 依赖于 openssl , libnl , 需要提前进行安装。安装方法ARM-Linux平台下,在上篇文章已经介绍。

1. 启动wpa_supplicant应用

wpa_supplicant -D nl80211 -i wlan0 -c /etc/wpa_supplicant.conf -B -d

-D 驱动程序名称(可以是多个驱动程序:nl80211,wext)
-i 网络接口名称
-c 配置文件
-B 在后台运行守护进程
-d:增加调试信息
配置文件 /etc/wpa_supplicant.conf文件里,添加下面代码:

常规连接已知WIFI填写

ctrl_interface=/var/run/wpa_supplicant  #必须配置
update_config=1 #强制更新覆盖配置 
ap_scan=1  #AP扫描(默认为0),=1是工作在nl80211的优化工作。为了寻找隐藏了的网络network={ssid="userxxx" #接入点名称psk="passwdxxx" #接入点密码priority=0   #优先级组,(默认为0)优先级数值越大,就越早在扫描结果中得到匹配,如果优先级组相同,则将会根据安全规则、信号强度等来作为选择的依据。
}

加密模式下填写

ctrl_interface=/var/run/wpa_supplicant #必须配置
update_config=1  #强制更新覆盖配置 network={ssid="xxxx"   #接入点名称scan_ssid=1    #无线接入点是隐藏可搜索连接#psk 是加密后的密码,用wpa_passphrase自动生成或连接已知WIFI的密码psk=xxxxxxxxx37bca5cf24a345f514d319211822f568bba28f8f0b74c894e7644proto=RSN   #支持的协议列表key_mgmt=WPA-PSK  #认证密钥管理协议pairwise=CCMP   #加密方式auth_alg=OPEN  #表示需开放系统身份验证
}

附注自动生成模式:

$ wpa_passphrase ESID passwd >>/etc/wpa_supplicant/wpa_supplicant.conf

or

wpa_passphrase wifiname passwd123 | sudo tee -a /etc/wpa_supplicant/wpa_supplicant.conf
network={undefinedssid="ESID"#psk="passwd"psk=7e0c3a4dcd727cea7b4fa10f489f0b165e50240823cc0b9d570916bdb63a71af
}

(1)ctrl_interface指向的是一个目录,在这个目录中默认会生成一个文件/var/run/wpa_supplicant/wlan0,这是local socket address,相当于UNIX Domain Socket,程序和后台程序wpa_supplicant进行通信(其实是wpa_supplicant作为后台服务程序是通过本地socket和客户端进行通信的)

(2)update_config = 1时会在(客户端发送SAVE_CONFIG命令)更新这个配置文件。

(3)具体配置参数详细解释查询地址:
https://www.freebsd.org/cgi/man.cgi?wpa_supplicant.conf(5)

2.启动wpa_cli应用

wpa_cli 有命令和交互的方式进行操作

wpa_cli -i wlan0 scan              //搜索附件wifi热点
wpa_cli -i wlan0 scan_result   //显示搜索wifi热点
wpa_cli -i wlan0 status              //当前WPA/EAPOL/EAP通讯状态
wpa_cli -i wlan0 ping                //pings wpa_supplicant

添加新的连接

wpa_cli -i wlan0 add_network   //添加一个网络连接,会返回<network id>
wpa_cli set_network <network id>  ssid '"name"'  //ssid名称
wpa_cli set_network <network id>  psk '“psk”'  //密码
wpa_cli set_network <network id>  scan_ssid 1
wpa_cli set_network <network id>  priority  1   //优先级

保存连接

wpa_cli -i wlan0 save_config   //信息保存到默认的配置文件中,前面提到的/etc/wpa_supplicant.conf

断开连接

wpa_cli -i wlan0 disable_network <network id>

连接已有连接

wpa_cli -i wlan0 list_network  //列举保存过得连接
wpa_cli -i wlan0 select_network  <network id>  //连接指定的ssid
wpa_cli -i wlan0 enable_network  <network id>  //使能制定的ssid

网络连接成功的配置文件示例

ctrl_interface=/var/run/wpa_supplicant/
ap_scan=1
network={scan_ssid=1ssid="xxxx"psk="xxxx"bssid=priority=2
}

wpa_cli无法运行的原因Could not connect to wpa_supplicant

必须在wpa_supplicant.conf 中的ctrl_interface添加/var/run/或者/run路径
在去启动服务。

配置wpa_supplicant.conf

update_config=1
ctrl_interface=/var/run/wpa_supplicant

启动服务

wpa_supplicant -D nl80211 -i wlan0 -c /etc/wpa_supplicant.conf -B

wpa_supplicant 常用操作及其wpa_cli无法运行的原因Could not connect to wpa_supplicant相关推荐

  1. wpa_supplicant 常用操作

    wpa_supplicant是一个连接.配置WIFI的工具,它主要包含wpa_supplicant与wpa_cli两个程序. 可以通过wpa_cli来进行WIFI的配置与连接,前提要保证wpa_sup ...

  2. TensorFlow常用操作:代码示例

    1,定义矩阵代码示例: import tensorflow as tftf.zeros([3,4]) #定义3行4列元素均为0的矩阵tensor=tf.constant([1,2,3,4])#定义一维 ...

  3. Ubuntu 常用操作

    Ubuntu常用操作 外观操作 修改应用icon图标 终端美化 内存管理 内存查询 分区管理 日志清理 操作执行 自动执行多条命令 外观操作 修改应用icon图标 在/usr/share/applic ...

  4. IOS沙盒Files目录说明和常用操作

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launc ...

  5. mysql数据导库常用操作

    工作中经常遇到:一个数据库导入新的数据库实例中,或者一个数据库中的某些表导入新的数据库中,常用操作,总结一下. 部分数据表导入新库 单表导入新库的sql为 # CREATE TABLE 新表 SELE ...

  6. String常用操作,StringBuffer。

    一.String类的常用操作 1.创建String字符串 String str = new String("我们爱学习"); String str1 = "我们不爱学习& ...

  7. MongoDB使用小结:一些常用操作分享

    MongoDB使用小结:一些常用操作分享 本文整理了一年多以来我常用的MongoDB操作,涉及mongo-shell.pymongo,既有运维层面也有应用层面,内容有浅有深,这也就是我从零到熟练的历程 ...

  8. docker 删除所有未启动的容器_Docker 镜像容器常用操作(让我们用 docker 溜得飞起)...

    推荐阅读: 面试字节跳动三轮凉凉,内推4面终拿下抖音offer(Java后台研发)​zhuanlan.zhihu.com 一线架构师Spring boot 学习笔记:我的成长全记在这份PDF文档里​z ...

  9. python序列类型-什么是序列,Python序列详解(包括序列类型和常用操作)

    所谓序列,指的是一块可存放多个值的连续内存空间,这些值按一定顺序排列,可通过每个值所在位置的编号(称为索引)访问它们. 为了更形象的认识序列,可以将它看做是一家旅店,那么店中的每个房间就如同序列存储数 ...

最新文章

  1. Nestjs OpenAPI(Swagger)
  2. 变量可以通过into赋值
  3. 【数字信号处理】离散时间系统 ( 离散时间系统概念 | 线性时不变系统 LTI - Linear time-invariant )
  4. stepinto stepout stepover的区别
  5. lia人是什么意思_狗狗喜欢舔人到底什么意思?毛孩的心思主人你要懂
  6. stm32 SPI、FLASH
  7. minio 搭建blob
  8. 01 Angular
  9. myeclipse中文界面改颜色_“颜色识别器”安卓APP功能详细介绍
  10. brew update:以下未跟踪的工作树文件将被合并覆盖:
  11. 如何使用maven打包
  12. POI导出excel加水印
  13. go语言中的try、catch、throw实现
  14. dell r510服务器怎么装系统,DellR510安装系统.docx
  15. linux deb文件安装
  16. 光纤工程的,光纤熔接,光纤测试
  17. 【sdx62】通过代码直接修改控制gpio实例
  18. 华为推出“换皮肤”服务
  19. mavros连接px4失败的usb-ttl原因
  20. 梦幻西游其他服务器显示重名,梦幻西游转区重名怎么办?梦幻西游转区重名改名要钱吗?...

热门文章

  1. B2C电子商务网站运营推广的优化技巧
  2. 解决执行`sudo apt-get install`命令出现`Could not get lock`错误
  3. Java高级-Lambda 表达式、异常处理、集合、泛型、List集合、Map集合、Collections类
  4. 黑莓将入华,服务费用不菲
  5. java formula one 用法_使用Formula One生成Excel报表-
  6. 基于BSN的财智联盟链在财税金融领域的应用
  7. MATLAB利用QQ图检验总体是否服从多维正态分布
  8. mysql binlog 过滤表_mysql日志恢复指定表【从binlog日志过滤恢复指定数据表】
  9. 利用最小堆完成有理数的类定义以及有理数逻辑运算
  10. 你不可不知的网站:stackoverflow