python脚本配置树莓派wifi热点

参考:https://www.cnblogs.com/hotwater99/p/12760261.html
https://blog.csdn.net/z2066411585/article/details/78761753
https://andyx.net/python_script_for_automatic_reconnection_of_wifi_for_raspberry_pi/

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

wpa_supplicant是一个连接和配置WIFI的工具,主要包含wpa_supplicant与wpa_cli两个程序。wpa_supplicant启动后可以用wpa_cli来连接和配置WIFI。
wpa_cli的常用操作参考这篇文章:https://blog.csdn.net/z2066411585/article/details/78761753

扫描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

在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 + ‘"’’)

函数的括号内是个字符串,拆成了下面的这几段:
在这里插入图片描述
创建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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值