在安装系统时,曾用手动的方式来配置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网络和密码相关推荐

  1. 无线WiFi网络的密码破解攻防及原理详解

    无线WiFi网络的密码破解攻防及原理详解 大家应该都有过这样的经历,就是感觉自己家的无线网怎么感觉好像变慢了,"是不是有人蹭我家网?""还有的时候咱们出门也想试图蹭一下别 ...

  2. 基础篇——用串口登陆树莓派pi3/pi4并配置wifi网络

    背景故事 在日常使用树莓派的过程中,常常会遇到没有屏幕或者不方便携带屏幕,但又需要使用树莓派的情况,当然很多人会先想到VNC或者SSH连接树莓派,但新的问题来了,到了陌生环境树莓派需要先配网,才能获取 ...

  3. 树莓派zero w 配置wifi

    Step1:创建配置文件 利用读卡器将SD插入电脑,在boot文件夹下创建wpa_supplicant.conf文件,添加如下内容并保存: ctrl_interface=DIR=/var/run/wp ...

  4. [网络篇]ESP8266-SDK教程(六)之网页配置Wi-Fi名称和密码

    这个周末有点忙,明天就是新的一周了,今晚更新一下文章!在上篇文章中有一点小小的历史遗留问题,不知道大家有没有自己实现出来,今天就给大家说一说网页配置Wi-Fi是怎么实现的,最近也是比较忙,手头有点小项 ...

  5. 树莓派3B连接隐藏wifi网络

    树莓派系统镜像 2018-11-13-raspbian-stretch-full.img 步骤 连接隐藏wifi可以使用nano编辑器打开wpa-supplicant配置文件: sudo nano / ...

  6. 查看已知WiFi网络的密码

    netsh wlan show profiles netsh wlan show profile name="CSUST" key=clear 场景:忘记了WiFi密码,而你的电脑 ...

  7. 树莓派python设置_树莓派基础设置

    Raspbian系统 下载链接:http://downloads.raspberrypi.org/raspbian_latest 默认帐号:Username: pi Password: raspber ...

  8. python连接wifi_树莓派利用PYTHON脚本自动连接WIFI无线

    前言 树莓派3集成了无线WIFI以后我们就可以利用树莓派自身的WIFI模块来进行无线网络的连接,但是在平成的使用过程中我们发现无线WIFI因为环境复杂所以经常出现断网的现象.这次我们牛人技术就为大家介 ...

  9. python设置背景颜色(mac)_配置PyCharm(背景色+字体大小+解释器选择)

    首先配置PyCharm的背景,快捷键组合,视图模式和风格. 使用快捷键Ctrl + "`"(该键位于键盘的左上角,和"~"同一个键位),即可开发上图配置选项. ...

最新文章

  1. 安森美电量计采用内部电阻跟踪电流--电压HG-CVR
  2. mysql删除中继日志_mysql 中继日志删除可以自动获取吗
  3. 连亏172亿,割肉卖楼,年收3700亿、闻名全球的巨头,败退中国!
  4. 浏览器插件检测淘宝订单是否淘客下单
  5. 费尔个人防火墙采用两种封包过滤技术
  6. JavaCV 绘制多边形
  7. linux下一个能显示IP来源的小工具-nali
  8. Mac 打造开发工作环境
  9. java获取京东token_京东开放服务平台(JOS)关于token问题汇总(一)
  10. 手机APP如何访问局域网服务器
  11. android 函数式编程,思想交融,Android中的函数式编程(2):什么是函数式编程...
  12. Latex中怎么去掉proof后的小方框
  13. 构造方法调用另一个构造方法
  14. 数据有效性高级应用——制作二级下拉菜单
  15. linux 源码安装7za
  16. java宅急送下载_java宅急送BOS物流项目
  17. kmalloc使用不当导致内存分配失败问题
  18. VK1668带键盘扫描接口的LED(发光二极管显示器)驱动控制IC功能及作用介绍
  19. java底层 —反射、动态代理
  20. python如何打开excel表格_如何从python中用excel打开excel工作表?

热门文章

  1. vue解析json数据
  2. cmd新建文件及文件夹
  3. 滴滴、哈啰的两封信:顺风车从业者一定要有行业的敬畏之心
  4. 安徽省2016“京胜杯”程序设计大赛_J_YZK的大别墅
  5. Linux中的压缩和解压缩--tar
  6. 法语语法---一般疑问句
  7. windows服务器2012,ftp用File zilla连接不上是怎么回事???
  8. java wsl连接tuxedo_Tuxedo 通讯方式解析(二)
  9. 栈堆的emplace和push_C++ stack emplace()用法及代码示例
  10. UNIX环境高级编程笔记(2)- STDIN_FILENO、STDOUT_FILENO和stdin、stdout的区别