Linux:命令行调试WiFi(iwlist/iwconfig/iw/wpa_supplicant/wpa_cli/dhcp/hostapd/hostapd_cli的使用方法)

【抄袭个笔记】
1、编译步骤

https://blog.csdn.net/weixin_49071468/article/details/133170711?spm=1001.2014.3001.5502
2、iwlist

iwlist wlan0 scan[ning]                    列出WiFi扫描结果
iwlist wlan0 freq[uency]/channel        列出当前地区可用频率
iwlist wlan0 rate/bit[rate]                 列出支持的连接速度
iwlist wlan0 keys/enc[ryption]            列出所支持的加密密钥大小
iwlist wlan0 power                        列出电源模式
iwlist wlan0 txpower                    列出传输功耗
iwlist wlan0 retry                        列出重连限制与次数
iwlist wlan0 ap/accesspoint/peers        列出热点信息
iwlist wlan0 event                        列出设备支持的无线事件
iwlist wlan0 auth                        列出当前设置的WPA认证参数
iwlist wlan0 wpa[keys]                    列出设备中设置的所有WPA加密密钥
iwlist wlan0 genie                        列出设置的通用信息元素
iwlist wlan0 modu[lation]                列出设备支持的调制和当前启用的调制
iwlist --version                        列出版本信息
iwlist --help                            列出帮助信息
 

3、iwconfig

iwconfig wlan0 freq 2422000000            设置频率
iwconfig wlan0 freq 2.422G                设置频率
iwconfig wlan0 channel 3                设置信道
iwconfig wlan0 channel auto                设置信道
iwconfig wlan0 modu 11g                    强制设置调制方式
iwconfig wlan0 modu CCK OFDMa            强制设置调制方式
iwconfig wlan0 modu auto                强制设置调制方式
iwconfig wlan0 txpower 15                设置发射功率为15dBm
iwconfig wlan0 txpower 30mW                设置发射功率:dBm=30+log(W)
iwconfig wlan0 txpower auto                设置自动选择发射功率
iwconfig wlan0 txpower off                关闭发射单元
iwconfig wlan0 sens -80                    负数为接收灵敏度下限,低则表信号差,网卡会采取措施
iwconfig wlan0 sens 2                    正数表示百分比
iwconfig wlan0 retry 16                    设置最大重传次数
iwconfig wlan0 retry lifetime 300m        设置最长重试时间,默认单位为秒
iwconfig wlan0 retry min limit 8        若支持自动模式,min和max指定上下限
iwconfig wlan0 rts 250                    设置握手最小包的大小,等于最大值表禁止该机制
iwconfig wlan0 rts off                    auto/off/fixed禁止RTS/CTS握手方式
iwconfig wlan0 frag 512                    设置发送数据包的分片大小
iwconfig wlan0 frag off                    auto/fixed/off允许Burst模式
iwconfig wlan0 power period 2            指定唤醒的周期,默认单位为秒
iwconfig wlan0 power 500m unicast        all/unicast/multicast指定允许唤醒的数据包类型
iwconfig wlan0 power timeout 300u all    all/unicast/multicast指定允许唤醒的数据包类型
iwconfig wlan0 power off                off/on参数指定是否允许电源管理
iwconfig wlan0 power min period 2 power max period 4 指定唤醒的周期
 

4、iw
iw --debug                                                使能netlink调试
iw --version                                            查看版本信息
iw help                                                    显示帮助信息
iw event [-t] [-r] [-f]                                    监听内核事件
iw list/phy                                                列出设备性能
iw dev                                                    列出无线硬件的所有网络接口
iw dev wlan0 scan                                        搜索周围WiFi信息
iw dev wlan0 link                                        获得连接状态
iw dev wlan0 info                                        显示接口信息
iw dev wlan0 station dump                                列出所有STA信息
iw dev wlan0 connect wifi名称                            连接至OPEN方式的AP
iw dev wlan0 connect wifi名称 2432                        有同名热点AP时指定特定频段
iw dev wlan0 connect wifi名称 key 0:密码 d:1:默认密码    连接至WEP加密方式的AP
iw dev wlan0 disconnect                                    断开连接
 

5、wpa_supplicant

5.1 wpa_supplicant —— 连接AP热点
前面iwlist、iwconfig属于wireless tools的程序,iw是iwconfig的替代者,都仅支持连接OPEN与WEP加密方式的WiFi;而wpa_supplicant支持在802.11规范中定义的各种安全连接和WPS。

wpa_supplicant -Dnl80211 -iwlan0 -c/etc/wpa_supplicant.conf -B
 

配置文件/etc/wpa_supplicant.conf内容参考:

<OPEN模式>:

ctrl_interface=/var/run/wpa_supplicant

network={
 ssid="WiFi-1"
 key_mgmt=NONE
}

 

<WEP模式>:

ctrl_interface=/var/run/wpa_supplicant

network={
 ssid="WiFi-1"
 key_mgmt=NONE
 wep_key0="abcde"
 wep_key1=0102030405
 wep_tx_keyidx=0
}

 

<WPA模式>:

ctrl_interface=/var/run/wpa_supplicant

network={
 ssid="WiFi-1"
 key_mgmt=WPA-PSK
 proto=WPA
 pairwise=TKIP
 group=TKIP
 psk="123123123"
}

 

<WPA2模式>:

ctrl_interface=/var/run/wpa_supplicant

network={
 ssid="WiFi-1"
 psk="123123123"
}

 

5.2 wpa_cli —— wpa_supplicant的客户端

wpa_cli程序的运行需要依赖于wpa_supplicant的后台运行,属于服务器端和客户端的关系。

wpa_cli help                                            打印帮助信息
wpa_cli -i wlan0 status                                    显示当前连接信息
wpa_cli -i wlan0 scan                                    搜索周围WiFi信息
wpa_cli -i wlan0 scan_result                            显示上一次的搜索结果
wpa_cli -i wlan0 list_networks                            显示已配置的网络与信息
wpa_cli -i wlan0 add_network                            添加一个网络返回一个数字n
wpa_cli -i wlan0 set_network n ssid '"name"'            输入要连接的WiFi名称
wpa_cli -i wlan0 set_network n key_mgmt NONE            输入加密方式OPEN/WEP
wpa_cli -i wlan0 set_network n wep_key0 '"psk"'            输入加密方式WEP的密码
wpa_cli -i wlan0 set_network n psk '"psk"'                输入加密方式WPA/WPA2的密码
wpa_cli -i wlan0 enable_network n                        设置后需要启用WiFi
wpa_cli -i wlan0 save_config                            保存WiFi配置
wpa_cli -i wlan0 select_network n                        有多个WiFi时选择其中一个
wpa_cli -i wlan0 reconfigure                            重新加载配置文件
wpa_cli -i wlan0 disconnect                                断开WiFi连接
wpa_cli -i wlan0 reconnect                                重新连接
wpa_cli -i wlan0 remove_network n                        移除WiFi配置
wpa_cli -i wlan0 terminate                                关闭后台服务器程序
wpa_cli [-i wlan0]                                        进入交互模式,命令可以为status等
 

6、动态获取IP地址

6.1 方式1:使用busybox自带的udhcpc工具(推荐)

udhcpc -i wlan0 &

如果失败,可以参考以下案列

前段时间在buildroot搭建的根文件系统中移植过wifi驱动并且调试成功,一般来说,buildroot构建的文件系统比较完整,但最近使用busybox来构建了根文件系统,后者就比较简陋,很多文件都是靠自己去创建等等,所以在移植wifi网卡的时候就出现了缺乏某些文件导致功能不能正常使用的问题,现在就记录一下使用busybox里的小工具udhcpc能成功动态获取ip地址,但没能自动设置DNS,也就没能上网的问题。

udhcpc是一个面向嵌入式系统的非常小的DHCP客户端,字母的缩写微- DHCP -客户端(μDHCPc)。

解决办法:

udhcpc只是获取一个IP,我们需要把\busybox-1.1.2\examples\udhcp下的脚本simple.script改名为default.script,放在开发板上的/usr/share/dhcpc/目录下,才能将获取的IP写到指定的网卡中。
1. busybox\examples\udhcp\simple.script
拷贝到开发板
/usr/share/udhcpc/default.script

2. 要添加可执行权限
# chmod 755 /usr/share/udhcpc/default.script

6.2 方式2:dhclient

dhclient wlan0                    获取IP地址
dhclient -r                        释放IP地址
dhclient -s 192.168.1.123        从指定的服务器获取ip地址
 

7、hostapd

7.1 hostapd —— 创建AP热点

hostapd /etc/myhostapd.conf -B

hostapd依赖于dhcpd后台运行给连接的设备动态分配IP地址,配置文件/etc/myhostapd.conf内容如下:
<OPEN模式>:

ctrl_interface=/var/run/hostapd
#change wlan0 to your wireless device
interface=wlan0
driver=nl80211
ssid=WiFi-1
channel=1
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
 

<WEP模式>:

ctrl_interface=/var/run/hostapd
#change wlan0 to your wireless device
interface=wlan0
driver=nl80211
ssid=WiFi-1
channel=1
macaddr_acl=0
auth_algs=2
ignore_broadcast_ssid=0
wep_key0="123123123"
wep_default_key=0

 

<WPA/WPA2模式>:

ctrl_interface=/var/run/hostapd
#change wlan0 to your wireless device
interface=wlan0
driver=nl80211
ssid=WiFi-1
channel=1
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=3
wpa_passphrase=123123123
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
 

7.2 hostapd_cli —— hostapd的客户端

hostapd_cli -h                                    显示帮助信息
hostapd_cli -v                                    显示版本信息
hostapd_cli -p <path>                            指定socket的路径                        
hostapd_cli -i wlan0 all_sta                    显示所有连接设备
hostapd_cli -i wlan0 sta <addr>                    查看某个设备信息
hostapd_cli -i wlan0 interface                    显示网卡接口
hostapd_cli -i wlan0 interface [ifname]            指定网卡接口
hostapd_cli -i wlan0 get_config                    获得配置
hostapd_cli -i wlan0 disassociate <addr>        断开某个设备的连接
hostapd_cli -i wlan0 level n                    设置打印级别
hostapd_cli -i wlan0 license                    显示证书
hostapd_cli [-i wlan0]                            进入交互模式,命令可以为all_sta等
 

8、动态分配IP地址

8.1 方式1:使用busybox自带的udhcpd工具(推荐)

# 提示没有哪些文件就去给它创建
touch /etc/udhcpd.leases
udhcpd -f /etc/dhcpd.conf &
 

配置文件/etc/dhcpd.conf内容如下:

start 192.168.1.100
end 192.168.1.199
interface wlan0
max_leases 32
remaining yes
auto_time 7200
decline_time 3600
conflict_time 3600
offer_time 60
min_lease 60
pidfile /etc/dhcpd_wlan0_pid.txt
lease_file /etc/udhcpd.leases
opt dns 192.168.1.1
opt subnet 255.255.255.0
opt router 192.168.1.1
opt wins 192.168.1.1
opt domain local
opt lease 3600
 

8.2 方式2:dhcpd

touch /var/db/dhcpd.leases
ifconfig wlan0 192.168.1.1
dhcpd -cf /etc/dhcpd.conf wlan0
 

subnet 192.168.1.0 netmask 255.255.255.0 {                       
  range 192.168.1.10 192.168.1.100;                              
  option domain-name-servers 192.168.1.1;                        
  option routers 192.168.1.1;                                    
}  
 

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值