python设置internet_树莓派中用Python配置WIFI网络和密码

在安装系统时,曾用手动的方式来配置WIFI网络和密码,但是在部署数据采集装置时,需要现场配置,为了方便操作可以用串口来传入数据,然后由Ptyhon程序去修改WIFI配置。

wpa_cli工具

wpa_supplicant是一个连接和配置WIFI的工具,主要包含wpa_supplicant与wpa_cli两个程序。wpa_supplicant启动后可以用wpa_cli来连接和配置WIFI。

扫描wlan

//搜索附近的wifi热点

wpa_cli -i wlan0 scan

//显示搜索wifi热点的结果

wpa_cli -i wlan0 scan_result

管理已有连接(/etc/network/interfaces 中保存的连接)

// 列举已有的连接

wpa_cli -i wlan0 list_network

// 连接指定的ssid

wpa_cli -i wlan0 select_network

// 使能指定的ssid

wpa_cli -i wlan0 enable_network

添加新的网络连接

返回新增网络连接的id(例子:已有0、1,新增2)

wpa_cli -i wlan0 add_network

修改网络连接的ssid(网络名)、psk(密码)

// 设置网络的ssid/网络名

wpa_cli -i wlan0 set_network 0 ssid '"ssid_set_by_wpa_cli"'

// 设置网络的psk/密码

wpa_cli -i wlan0 set_network 0 psk '"psk_set_by_wpa_cli"'

// 设置网络的扫描方式

wpa_cli -i wlan0 set_network 0 scan_ssid 1

// 设置网络的优先级

wpa_cli -i wlan0 set_network 0 priority 1

// 保存配置到wpa_supplicant.conf

wpa_cli -i wlan0 save_config

以设置网络0为例:

打开/etc/wpa_supplicant/wpa_supplicant.conf 查看结果。

pi@raspberrypi:~ $ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

在Python中调用wpa_cli

上面是在命令行中使用wpa_cli,在Python中可以通过os.system()函数来执行命令行指令。

以这条指令为例:

wpa_cli -i wlan0 set_network 0  ssid '"ssid_set_by_wpa_cli"'

在Python中调用,就是把这条指令用字符串的形式传递给os.system()函数:

os.system('sudo wpa_cli -i wlan0 set_network 0 ssid '"ssid_set_by_wpa_cli"'')

各种引号比较绕,首先是最外层的单引号,然后"ssid_set_by_wpa_cli"外也有一层单引号。

实际使用时,用户ssid是个字符串变量:

os.system('sudo wpa_cli -i wlan0 set_network 0 ssid ' + '\'"' + ssid + '"\'')

函数的括号内是个字符串,拆成了下面的这几段:sudo wpa_cli -i wlan0 set_network 0 ssid

字符串

\'"\'--转义,代表单引号,这段相当于'"

ssid用户ssid字符串

"\'

\'--转义,代表单引号,这段相当于"'

创建test_wpa.py

pi@raspberrypi:~ $ sudo nano test_wpa.py

1 # -*- coding:utf-8 -*-

2 import os

3

4 def set_wifi_ssid_psk(ssid, psk):

5 os.system('sudo wpa_cli -i wlan0 set_network 0 ssid ' + '\'"' + ssid + '"\'')

6 os.system('sudo wpa_cli -i wlan0 set_network 0 psk ' + '\'"' + psk + '"\'')

7 os.system('sudo wpa_cli -i wlan0 enable_network 0')

8 os.system('sudo wpa_cli -i wlan0 save_config')

9

10 def main():

11 set_wifi_ssid_psk('ssid_set_by_python', 'psk_set_by_python')

12

13 if __name__ == '__main__':

14 main()

运行test_wpa.py

pi@raspberrypi:~ $ python test_wpa.py

查看结果,第0个网络连接修改成功,到这里就实现在Python中配置网络连接的功能。

pi@raspberrypi:~ $ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值