Linux WiFi 射频开关`rfkill`控制无线网启停与`ifconfig`显示的关系

1 rfkill命令简介

rfkill命令可以用来打开和关闭WiFi的射频开关。

1.1 rf的含义

射频(rf)是Radio Frequency的缩写,rfkill可以管理wifi、wlan、bluetooth、uwb、wimax、wwan、gps、fm、nfc无线信号。
这种开关在某种程度上能够控制硬件的状态,使用的例子有:飞行模式、硬件节能。

1.2 常用命令

rfkill常用有如下的命令:

# 罗列出所有的无线设备
rfkill list

# 关闭所有的射频设备
rfkill block all
# 打开所有的射频设备
rfkill unblock all

# 可以关掉/打开某种类型的设备,例如WiFi
rfkill block wifi
rfkill unblock wifi

# 也可以对于某个设备进行打开和关闭
# 下面的编号可以从`rfkill list`中查看
rfkill block/unblock 编号

2 rfkillifconfig配合使用

2.1 正常的现象

假设我的当前系统里面存在一个网卡wlan0,关闭其射频信号,之后使用ifconfig则查看不到wlano这个网卡的信号了,代码(代码1)如下:

rfkill block wifi
ifconfig

然后我再使用rfkill打开射频,之后就可以使用ifconfig查看到wlan0了,具体代码(代码2)如下:

rfkill unblock wifi
ifconfig

2.2 为什么这样使用

由于存在这种特性,则计划使用这种特性来,查看ifconfig来确定某个无线网卡的状态。
为什么不使用rfkill list来查看对应无线设备的状态了?
这时因为,在展示的列表中,对应的设备只有编号,并不是很客观能与具体那个无线设备联系起来。

2.3 发现的问题

但是发现一个问题,在我多次交替执行打开/关闭WiFi设备之后,无论是打开还是关闭设备,这个无线网在ifconfig中一直显示,发现上面的判断的规律失效了,我尝试的系统是CentOS7.x。

2.4 配合ifconfig up/down解决问题

当我还想使用这个rfkillifconfig判断是否关闭wlan0,怎么做呢?
我发现使用ifconfig interface up/down能够控制ifconfig中显示。如果我在使用rfkill启停网络之后,再配合使用ifconfig interface up/down,那么这样就能再使用ifconfig就能达到刚才的功能了。
在具体执行的时候,只有rfkill启动了射频,才能使用ifconfig interface up,因此在逆向操作时候,先执行ifconfig interface down再执行rfkill停止射频。具体代码如下:

  1. 停止射频
ifconfig wlano down
rfkill block wifi
  1. 打开射频
rfkill unblock wifi
ifconfig wlan0 up

这样在其他程序或者进程/线程中就能使用ifconfig方便判断硬件射频启停的状态了。

3 其他建议

由于ifconfig命令已经算是过时的命令,则实际使用中,最后慢慢摆脱对于这个命令的依赖,使用ip命令代替。
本文章讨论的时候,只存在一个WiFi网络,所有可以方便使用rfkill block/unblock wifi粗略控制开关,否则具体控制设备编号开控制启停。
本文章对于是否禁掉无线的判断使用ifconfig并不是最好的,可以用其他更好方法尝试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值