ubuntu16.04 python及terminal对wlan进行操作

iwconfig

不推荐,仅供参考

使用iwconfig命令
搜索无线网 iwlist wlan0 scan
连接无密码的无线网 iwconfig wlan0 essid ChinaNet 其中ChinaNet是搜索到的无线网essid
连接有密码的无线网 iwconfig wlan0 essid ChinaNet key xxxx 其中xxxx是密码
启用无线网卡 ifconfig wlan0 up
通过dhcp获取IP dhclient wlan0 或 dhcpcd wlan0

python测试用demo

import os
import re


wlan_origin = os.popen("iwlist wlp2s0 scan").readlines()
print(wlan_origin)

wlan = list(filter(lambda x: x.find("ESSID") >= 0, wlan_origin))  # 获取list中所有包含ESSID的值
wlan = [x.strip(' ').strip('\n').strip('ESSID:').strip('"') for x in wlan]  # 处理list中所有包含ESSID的值

wlan_key = list(filter(lambda x: x.find("Encryption") >= 0, wlan_origin))  # 获取list中所有包含ESSID的值
wlan_key = [x.strip(' ').strip('\n') for x in wlan_key]  # 处理list中所有包含ESSID的值

print(wlan)
print(wlan_key)

# wifi_callback = os.system(f"nmcli dev wifi connect {wlan[1]} password ab12345678") # 连接wifi
# print(wifi_callback)

nmcli

获取wifi list

def wifi_list():
    """
    获取当前NUC发现的wifi列表
    :return:
    """
    
    """
    nmcli dev wifi获取系统无线网卡信息
    连接方式:nmcli dev wifi connect [essid] password [password]
    """
    wlan_origin = os.popen("nmcli device wifi").readlines()  # 获取无线网卡wifi列表
    print(wlan_origin)
    wlan = [re.split("\s{2,}", x) for x in wlan_origin]  # 处理数据
    for i in wlan[:]:
        if i[1] == "--":
            wlan.remove(i)

    print(wlan)
    # wlan = [re.split("\s{2,}", x)].append(wlan)

    """
    SSID:WIFI名称
    MODE:网络拓扑形式 基础网Infra和自组网Adhoc
    CHAN:wifi信道
    RATE:wifi物理速率
    SIGNAL:wifi信号强度
    BARS:信号强度图表
    SECURITY:加密方式 若值为“--”则无加密
    """

获取当前网卡连接状态

def connect_status():
    """
    获取当前网卡连接状态
    :return: 无线网卡状态,数组
    """
    wlan_status = os.popen("nmcli device ").readlines()  # 获取网卡连接状态
    print(wlan_status)
    wlan_status = [re.split("\s{2,}", x) for x in wlan_status]  # 处理数据

    print(wlan_status)
    for status in wlan_status:
        if status[1] == "wifi":
            return status  # 返回无线网卡状态,数组

    return "Wi-Fi disable"

    # noinspection PyUnreachableCode
    """
        DEVICE  TYPE      STATE                     CONNECTION
        eno1    ethernet  connected                 有线连接 1
        wlp2s0  wifi      connecting (configuring)  adocir
        lo      loopback  unmanaged
    """

连接wifi

def connect_wifi(wifi_name, password):
    """
    连接wifi
    :param wifi_name: wifi名称
    :param password: wifi密码
    :return:
    """
    nmcli_connection_show = os.popen("nmcli connection show").readlines()  # 获取无线网卡已储存的wifi列表
    nmcli_connection_show = [re.split("\s{2,}", x) for x in nmcli_connection_show]
    print(nmcli_connection_show)

    check = False
    for i in nmcli_connection_show:  # 连接wifi
        if i[0] == wifi_name:
            result = os.popen(f"nmcli connection up {wifi_name}")  # 已存在的ssid连接
            res = result.read()
            for line in res.splitlines():
                if ("successfully" in line) and (connect_status()[2] == "connected"):
                    print("connection_success")
                    check = True

    if not check:
        try:
            result = os.popen(f"nmcli --ask device wifi connect {wifi_name} password {password}")  # wifi密码连接
            res = result.read()
            for line in res.splitlines():
                print(line)
                if ("successfully" in line) and (connect_status()[2] == "connected"):
                    print("connection_success")
        except:
            print("ERROR")

断开连接

def disconnect_wifi():
    """
    断开wifi连接
    :return:
    """
    os.system(f"nmcli device disconnect {connect_status()[0]}")  # 断开连接
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值