WPA Supplicant 用法
本文译至:https://wiki.archlinux.org/index.php/WPA_Supplicant_%28%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%29
wpa_supplicant 是跨平台的 WPAsupplicant,支持 WEP, WPA 和 WPA2 (IEEE 802.11i / RSN (Robust Secure Network)). 可以在桌面、笔记本甚至嵌入式系统中使用。
wpa_supplicant 是在客户端使用的 IEEE 802.1X/WPA 组件, 支持与 WPA Authenticator 的交互,控制漫游和无线驱动的 IEEE 802.11 验证和关联。
安装
从 官方软件仓库 中安装软件包 wpa_supplicant。
此外软件包 wpa_supplicant_gui 提供了图形界面wpa_gui。
启动
本节介绍启动wpa_supplicant的常用方法,选择一个最适合你的。
systemd
wpa_supplicant提供多种服务的文件:
wpa_supplicant.service- 使用 D-Bus, 推荐 NetworkManager 的用户.wpa_supplicant@.service- 接受接口名作为参数,并为该接口启动wpa_supplicant守护进程。它读取/etc/wpa_supplicant/wpa_supplicant-interface.conf的配置文件wpa_supplicant-nl80211@.service- 也是接口特定的,但明确强制nl80211驱动程序 (见下文). 配置文件路径是/etc/wpa_supplicant/wpa_supplicant-nl80211-interface.confwpa_supplicant-wired@.service- 也是接口特定的, 使用wired驱动. 配置文件路径是/etc/wpa_supplicant/wpa_supplicant-wired-interface.conf
dhcpcd
dhcpcd包含了一个钩子(默认为启用)来自动启动对应无线接口的wpa_supplicant。它只在如下情况下启动:
- 没有wpa_supplicant进程在该接口在监听。
- 存在一个wpa_supplicant的配置文件。dhcpcd 默认检查 /etc/wpa_supplicant.conf 和 /etc/wpa_supplicant/wpa_supplicant.conf,但可以通过在/etc/dhcpcd.conf设置env wpa_supplicant_conf=configuration_file_path来添加自定义路径。
手动
wpa_supplicant接受多个命令行参数,特别是:
-B- 在后台执行-c 文件名-路径配置文件-i 接口- 监听的接口
关于完整的参数列表,参考 man 8 wpa_supplicant。例如,常见的用法是:
# wpa_supplicant -B -i interface -c configuration_file
配置
wpa_supplicant提供了一个参考配置文件/etc/wpa_supplicant/wpa_supplicant.conf,其中包含了所有可用的选项及其用法和例子的详细文档。考虑先把它备份起来,因为下面描述的自动添加网络配置到wpa_supplicant.conf的方法下删除了文件中的所有注释。
在其最简单的形式中,一个配置文件,只需要一个网络配置块。例如:
/etc/wpa_supplicant/foobar.conf
network={
ssid="..."
}
一旦你有一个配置文件,如前节所述,就可以启动wpa_supplicant守护进程,并使用一个静态IP或DHCP连接到无线网络。
wpa_passphrase
网络配置可以使用wpa_passphrase工具自动生成并添加到配置文件中。这在连接到需要密码的安全网络时是有用的。例如:
$ wpa_passphrase essid passphrase
network={
ssid="essid"
#psk="passphrase"
psk=f5d1c49e15e679bebe385c37648d4141bc5c9297796a8a185d7bc5ac62f954e3
}
一些异常复杂的口令可能需要从文件输入:
$ wpa_passphrase essid < passphrase.txt
# wpa_supplicant -B -i interface -c <(wpa_passphrase essid passphrase)
指定驱动
您可能需要指定一个驱动来使用。关于支持的驱动程序的列表,请参考wpa_supplicant -h的输出结果。
nl80211是当前的标准,但不是所有的无线芯片的模块支持。wext目前已过时,但仍得到广泛支持。
使用 -D 开关来指定驱动:
# wpa_supplicant -B -i interface -c configuration_file -D driver
使用 wpa_cli
wpa_supplicant可以通过使用wpa_cli命令,在运行时手动进行控制。要启用wpa_cli,wpa_supplicant守护进程必须被配置为通过在wpa_supplicant的配置文件(默认位置:/etc/wpa_supplicant/wpa_supplicant.conf)设置ctrl_interface变量来创建一个“控制接口”(套接字)。
用户也将需要通过指定可以访问它的组来获准访问该套接字。一个新的组可能为此被创建,并且用户添加到它,或已存在的组可以使用 - 通常是 wheel。
下面的设置将在/run/wpa_supplicant/中创建套接字并允许wheel组的成员进行访问:
ctrl_interface=DIR=/run/wpa_supplicant GROUP=wheel
可以通过wpa_cli修改的wpa_supplicant配置文件自身。这在手动添加新的网络到配置文件,而无需重新启动wpa_supplicant守护进程时是有用的。为了实现这一目标,在配置文件中设置update_config变量设置为1:
update_config=1
在wpa_cli开始之前,wpa_supplicant守护进程必须处于运行状态。(见#Starting了解详情)。然后启动
$ wpa_cli
它会寻找配置文件中给定位置的控制套接字,位置也可以使用p选项手动设置)。您可以使用-i选项配置的接口,不然的话将使用wpa_supplicant所管理的第一个被找到的无线接口。
当wpa_cli被调用时,将出现交互式提示符(>)。提示包括tab 补全和已完成命令的说明。
使用wpa_cli添加一个新的网络
扫描可用网络,在>提示符之后输入“scan”。在扫描完成后将显示通知:
> scan
OK
<3>CTRL-EVENT-SCAN-RESULTS
>
然后输入 "scan_results" 来显示结果:
> scan_results
bssid / frequency / signal level / flags / ssid
00:00:00:00:00:00 2462 -49 [WPA2-PSK-CCMP][ESS] MYSSID
11:11:11:11:11:11 2437 -64 [WPA2-PSK-CCMP][ESS] ANOTHERSSID
>
为了与MYSSID相关联,需要告知wpa_supplicant。在配置文件中的各个网络是以零开始按数值进行索引。如果您添加了一个新的网络,它会被相应地分配一个新数字。
> add_network
0
>
使用这个数字来指定你的设置应用到哪个网络。对于一个新的网络,在引号里设置其SSID:
> set_network 0 ssid "MYSSID"
OK
>
即使你的无线接入点没有被保护,cli也显式地需要一个PSK,同样在引号内。密码必须是8-63个字符:
> set_network 0 psk "passkey"
OK
>
使能:
> enable_network 0
OK
>
将修改写入配置文件:
> save_config
OK
>
动作脚本
wpa_cli可以在后台模式下运行,并执行基于wpa_supplicant事件的指定脚本。可以支持两类事件:连接和断开。一些环境变量可用于脚本,细节请参考man 8wpa_cli。
下面的例子将使用桌面通知,通知有关事件的用户:
#!/bin/bash case "$2" in
CONNECTED)
notify-send "WPA supplicant: connection established";
;;
DISCONNECTED)
notify-send "WPA supplicant: connection lost";
;;
esac
记住修改脚本为可执行,然后使用-a来传递脚本路径给wpa_cli:
$ wpa_cli -a path_to_script
另请参阅
WPA Supplicant 用法的更多相关文章
- wifi测试相关(iwconfig,WPA Supplicant用法)
iwconfig用法 1.打开无线网卡电源 iwconfig wlan0 txpower no 2.列出区域内的无线网络 iwconfig wlan0 scan 3.假设要连接到网络myhome(即e ...
- wpa supplicant 保存 wifi 设置
wpa suppliclant使用wpa gui连接wifi后,下次开机的时,不能保存,需要从新手动进行连接. 自动保存方法: 配置文件/etc/wpa_supplicant.conf 添加 upda ...
- wpa supplicant 移植
最近移植wifi,WIFI芯片使用rtl8723.在文件系统生成了设备节点.需要移植工具进行测试: iwconfig:没有密码的或者wep加密的wifi,使用iwconfig就已经够用. wpa_su ...
- wpa gui
wpa gui是wpa_supplicant的ui工具. wpa_supplicant源码中包含了wpa_gui, 在目录wpa_gui-qt4中. 先运行wpa supplicant,再运行wpa ...
- wpa_supplicant软件架构分析
wpa_supplicant软件架构分析 1. 启动命令 wpa supplicant 在启动时,启动命令可以带有很多参数,目前我们的启动命令如下: wpa_supplicant /system/bi ...
- wpa_supplicant 使用
(1)通过adb命令行,可以直接打开supplicant,从而运行wpa_cli,可以解决客户没有显示屏而无法操作WIFI的问题,还可以避免UI的问题带到driver.进一步来说,可以用在很多没有键盘 ...
- CentOS7+Hadoop2.7.2(HA高可用+Federation联邦)+Hive1.2.1+Spark2.1.0 完全分布式集群安装
1 2 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.9.1 2.9.2 2.9.2.1 2.9.2.2 2.9.3 2.9.3.1 2.9.3.2 2.9.3.3 2. ...
- 无线linux应用及配置--wifi配置
linux下应用wifi,AP侧运行程序hostapd,客户端运行wpa_supplicant.官网:http://w1.fi/. 无线网卡应用 无线网卡的应用服务程序为wpa_supplicant, ...
- 部分rpm包总结描述
acl-2.2.51-15.el7.x86_64 Commands for Manipulating POSIX(可移植操作系统接口 of unix) Access Control Lists.有ge ...
随机推荐
- 直播类送礼动画<豪华礼物+小礼物>
直播类送礼动画<豪华礼物+小礼物>:代码会持续更新,现直播的app里内有太多的动画,由于时间关系不能一次共享所有动画聘为,这次先共享几个比较火爆的动画. 支持真机和模拟器上运行,最低支持i ...
- iOS 图片按比例压缩,指定大小压缩
使用系统方法UIImageJPEGRepresentation(UIimage *image,CGFloat quality)进行图片质量压缩,暂且叫参数quality为压缩比吧,取值范围为0-1. ...
- jQuery 源码分析2: jQuery.fn.init
//jQuery.fn.intit 中使用到的外部变量: // 判断是否为HTML标签或#id rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w ...
- 09.13随笔2014年9月13日22:32:38,奶爸的英语教室,groovy
我们这里只推荐一本语法书:台湾的旋元佑老师写的<文法俱乐部>(简体版名为<语法俱乐部>).这本书因为出版社倒闭而绝版,淘宝可以买到影印的版本. (1)学英语到 奶爸的英语教室 ...
- HDU 4707 Pet(BFS)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4707 题目大意:在一个无环的,从0开始发散状的地图里,找出各个距离0大于d的点的个数 Sample I ...
- 利用Xlinix SDK 建立Linux程序以及对该程序进行调试
一.创建Linux程序 1. 点击File > New > Application Project .并参照下图设置. 2. 输入工程名,并选择存储路径. 3. 选择所需的操作系统平台(O ...
- java对象初始化顺序的简单验证
以下这段小程序对调用对象构造函数时,父类构造函数.成员变量初始化函数,以及非静态初始化块调用顺序进行验证,不考虑静态成员及静态初始化块. public class Derive extends Bas ...
- 微软AJAX解决方案
-------- 微软AJAX解决方案 (*) --------ASP.Net中内置的简化AJAX开发的控件UpdatePanel 放入ScriptManager,将要实现AJAX效果的控件放到Upd ...
- MongoDB笔记(二)访问权限
要访问数据库,那么对访问权限的设置是必须的! 1.启用权限控制(-auth),当启用MongoDB数据库服务时,对参数的设置可以决定是否启用权限控制 不开启: mongod -dbpath=D:/ ...
- thinkphp+mysql+bootstrap
#thinkphp+mysql+bootstrapthinkphp3.2.3,bootstrap V3一个简易的企业cms网站系统,只要将clients的host改为对应的域名即可.thinkphp. ...