IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> centos7无法使用pywifi,无法启动自动连接网络脚本 -> 正文阅读

[系统运维]centos7无法使用pywifi,无法启动自动连接网络脚本

最近尝试在centos系统上执行一个自动连接网络的脚本,但是在新的centos系统上无法运行,以下是解决这个问题的一种方法。

首先,用pip下载脚本需要的库pywifi,然后执行这个脚本文件。

脚本文件连接函数如下:

def connect():
    wifi=pywifi.PyWiFi()
    ifaces=wifi.interfaces()[0]#获取该目录下的所有文件,一般为套接字文件,文件名为网卡名
    print(ifaces.status())#获取该网卡状态,即是否连接网络
    ifaces.disconnect() #断开连接
    profile=pywifi.Profile()
    profile.ssid="vivo X50 Pro" #wifi名字
    ifaces.remove_all_network_profiles()  # 删除其他配置文件
    tmp_profile = ifaces.add_network_profile(profile)  # 加载配置文件
    timeout=10
    ts_start=time()
    ifaces.connect(tmp_profile)  # 连接
    while time()-ts_start<timeout:
      print("connecting...")
      if ifaces.status()==pywifi.const.IFACE_CONNECTED:
        print("success")
        break
      sleep(1)
    #ifaces.disconnect()
    print("查看连接")

执行后发现出错了
如图,在执行这个脚本的时候,脚本中的wifi.interfaces()[0]报错,无法获取到相应的套接字文件,即/var/run/wpa_supplicant文件夹不存在或者文件下无对应的套接字文件
如图,在执行这个脚本的时候,脚本中的wifi.interfaces()[0]报错,无法获取到相应的套接字文件,即/var/run/wpa_supplicant文件夹不存在或者文件下无对应的套接字文件。

一般的centos会自带wpa_suplicant,后面要做的就是启动它,/etc/wpa_supplicant中有一个wpa_supplicant.conf文件,我的这个文件有如下一行:ctrl_interface=/var/run/wpa_supplicant
由之前的报错信息再结合此路径,可联想到wpa_suplicant未生效

以下是我的conf文件:

ctrl_interface=/var/run/wpa_supplicant
network={
        ssid="vivo X50 Pro"		#WIFI名称
        psk="12345654321"	 # WIFI密码
}

当wpa_supllicant启动后,会根据.conf文件,在对应目录下生成套接字文件

因此,先下载wpa_supplicant,但一般centos7会自带

yum install wpa_supplicant

之后,在终端执行如下代码:

wpa_supplicant -Dnl80211 -i ens33 -c /etc/wpa_supplicant/wpa_supplicant.conf


如果出现如下的报错:
在这里插入图片描述
其中,nl80211是接口驱动,ens33是你的网卡名,可通过ip addr指令或者ifconnfig查询。
,/etc/wpa_supplicant/wpa_supplicant.conf是conf文件的位置。

从网上翻阅资料来看,字符化界面可能不支持nl80211这个驱动,而安装野生的驱动不一定可以打开wlan模块,这也是困扰很久的地方。万幸的是,Linux无线驱动接口有两种标准接口,wext(Wireless Extensions无线扩展接口)和nl80211接口。

因此,对刚才的命令进行改动:

wpa_supplicant -D wext -i ens33 -c /etc/wpa_supplicant/wpa_supplicant.conf -B

将nl80211换成wext,-Dwext和-D wext一个效果,最后的-B需要加上,放在后台运行。

出现如下反馈,表明成功运行
在这里插入图片描述
此时,在/var/run/wpa_supplicant文件夹的下面会出现套接字文件,前提是网卡没有被关闭,我的wpa_suplicant下面会出现一个ens33文件,无法打开,为套接字文件。至此,wpa_supplicant就完全启动了,并且自动生成了脚本代码中需要的文件。

但是,当再次启动wifi.py脚本文件的时候,并没有实现自动连接,为此,我们首先需要关闭networkmanager服务

systemctl stop NetworkManager  // 关闭服务

NetworkManager是一个检测网络、自动连接网络的程序(网络管理器),为了避免冲突,我们将其关闭。

其次,给你的网卡分配一个ip

udhcpc -b -i  ens33

或者用dhclient指令分配一个ip,dhclient ens33如果最开始没有连接网络,操作之后可以ping通,原理不大清楚。

在此操作之后,脚本便可以成功运行。

本次共用了4个系统,1个ubuntu真机,一个ubuntu虚拟机,两个centos7虚拟机,最后的结果只有ubuntu真机可以成功运行,虚拟机可能和pywifi库不适配,脚本代码中,print(ifaces.status())如果答案为4,即网络已连接,结果为0,即网络未连接。虚拟机中,无论网络是否连接,都显示0.此问题未能解决。

笔记一:
ip相关指令:
ip addr:显示网卡信息及是否连接
ip link set ens33 down //关闭特定的网卡
ip link set ens33 up //激活特定的网卡
ip link show ens33 //查看网卡连接

笔记二:
networkmanager相关指令:
systemctl stop NetworkManager // 关闭服务
systemctl disable NetworkManager // 设置重启不启动
systemctl start NetworkManager //启动服务
nmcli networking on //接着上一个指令,打开networkmanager

笔记三:
网卡配置相关操作:
vi /etc/sysconfig/network-scripts/ifcfg-ens33 //打开网卡配置文件
其中有一行ONBOOT="yes" #开机是否自动连接,改成no之后,再执行 service network restart会发现网络会断开连接。网卡信息如下:
在这里插入图片描述

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-07-03 11:10:24  更:2022-07-03 11:10:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/5 8:34:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码