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
python设置internet_树莓派中用Python配置WIFI网络和密码相关推荐
- 无线WiFi网络的密码破解攻防及原理详解
无线WiFi网络的密码破解攻防及原理详解 大家应该都有过这样的经历,就是感觉自己家的无线网怎么感觉好像变慢了,"是不是有人蹭我家网?""还有的时候咱们出门也想试图蹭一下别 ...
- 基础篇——用串口登陆树莓派pi3/pi4并配置wifi网络
背景故事 在日常使用树莓派的过程中,常常会遇到没有屏幕或者不方便携带屏幕,但又需要使用树莓派的情况,当然很多人会先想到VNC或者SSH连接树莓派,但新的问题来了,到了陌生环境树莓派需要先配网,才能获取 ...
- 树莓派zero w 配置wifi
Step1:创建配置文件 利用读卡器将SD插入电脑,在boot文件夹下创建wpa_supplicant.conf文件,添加如下内容并保存: ctrl_interface=DIR=/var/run/wp ...
- [网络篇]ESP8266-SDK教程(六)之网页配置Wi-Fi名称和密码
这个周末有点忙,明天就是新的一周了,今晚更新一下文章!在上篇文章中有一点小小的历史遗留问题,不知道大家有没有自己实现出来,今天就给大家说一说网页配置Wi-Fi是怎么实现的,最近也是比较忙,手头有点小项 ...
- 树莓派3B连接隐藏wifi网络
树莓派系统镜像 2018-11-13-raspbian-stretch-full.img 步骤 连接隐藏wifi可以使用nano编辑器打开wpa-supplicant配置文件: sudo nano / ...
- 查看已知WiFi网络的密码
netsh wlan show profiles netsh wlan show profile name="CSUST" key=clear 场景:忘记了WiFi密码,而你的电脑 ...
- 树莓派python设置_树莓派基础设置
Raspbian系统 下载链接:http://downloads.raspberrypi.org/raspbian_latest 默认帐号:Username: pi Password: raspber ...
- python连接wifi_树莓派利用PYTHON脚本自动连接WIFI无线
前言 树莓派3集成了无线WIFI以后我们就可以利用树莓派自身的WIFI模块来进行无线网络的连接,但是在平成的使用过程中我们发现无线WIFI因为环境复杂所以经常出现断网的现象.这次我们牛人技术就为大家介 ...
- python设置背景颜色(mac)_配置PyCharm(背景色+字体大小+解释器选择)
首先配置PyCharm的背景,快捷键组合,视图模式和风格. 使用快捷键Ctrl + "`"(该键位于键盘的左上角,和"~"同一个键位),即可开发上图配置选项. ...
最新文章
- 安森美电量计采用内部电阻跟踪电流--电压HG-CVR
- mysql删除中继日志_mysql 中继日志删除可以自动获取吗
- 连亏172亿,割肉卖楼,年收3700亿、闻名全球的巨头,败退中国!
- 浏览器插件检测淘宝订单是否淘客下单
- 费尔个人防火墙采用两种封包过滤技术
- JavaCV 绘制多边形
- linux下一个能显示IP来源的小工具-nali
- Mac 打造开发工作环境
- java获取京东token_京东开放服务平台(JOS)关于token问题汇总(一)
- 手机APP如何访问局域网服务器
- android 函数式编程,思想交融,Android中的函数式编程(2):什么是函数式编程...
- Latex中怎么去掉proof后的小方框
- 构造方法调用另一个构造方法
- 数据有效性高级应用——制作二级下拉菜单
- linux 源码安装7za
- java宅急送下载_java宅急送BOS物流项目
- kmalloc使用不当导致内存分配失败问题
- VK1668带键盘扫描接口的LED(发光二极管显示器)驱动控制IC功能及作用介绍
- java底层 —反射、动态代理
- python如何打开excel表格_如何从python中用excel打开excel工作表?
热门文章
- vue解析json数据
- cmd新建文件及文件夹
- 滴滴、哈啰的两封信:顺风车从业者一定要有行业的敬畏之心
- 安徽省2016“京胜杯”程序设计大赛_J_YZK的大别墅
- Linux中的压缩和解压缩--tar
- 法语语法---一般疑问句
- windows服务器2012,ftp用File zilla连接不上是怎么回事???
- java wsl连接tuxedo_Tuxedo 通讯方式解析(二)
- 栈堆的emplace和push_C++ stack emplace()用法及代码示例
- UNIX环境高级编程笔记(2)- STDIN_FILENO、STDOUT_FILENO和stdin、stdout的区别