debian12 基于nmcli的wifi网卡连接PEAP网络脚本

nmcli_ctl.sh

PS:

  1. 这个脚本可以半自动实现wifi网卡连接PEAP网络,遗憾的是添加网络成功后,会有一个交互的过程,需要回车后再次输入密码;
  2. 如果通过桌面配置了wifi网卡,或者连接过wifi网卡,这时候这个脚本是不生效的,需要在桌面wifi网络配置先点击忘记网络。
#!/bin/bash

device_name=$1

wifi_ssid=修改成目标WIFI名称
peap_name=修改成你的 PEAP用户名
peap_passwd=修改成你的 PEAP密码
new_conn_name=${wifi_ssid}_${device_name}

function Usage()
{
    echo -e "Usage:$0 [device_name]"
    exit 0
}


function device_info()
{
    echo -e "\n网卡信息:"
    echo -e "------"
    nmcli device status
}

function connect_info()
{
    echo -e "\n当前连接信息:"
    echo -e "------"
    nmcli connect show
}


function create_conn()
{
    echo -e "\n寻找网卡$device_name的目标网络$wifi_ssid"
    echo -e "------"
    nmcli device wifi list ifname $device_name | grep  $wifi_ssid
    if [[ $? != 0 ]];then
        echo -e "\n没有找到目标网络$wifi_ssid"
        exit 0
    fi
    
    nmcli connect show|grep $new_conn_name
    if [[ $? == 0 ]];then
        echo -e "\n已有连接名称$new_conn_name, 请删除或修改连接名称"
        echo -e "\n删除提示: nmcli connect delete [连接名称]"
        exit 0
    fi

    echo -e "\n开始为网卡$device_name创建WIFI连接配置:$new_conn_name"
    # 指定使用 WPA-EAP 管理方式
    # wifi-sec.key-mgmt wpa-eap
    
    # 指定使用 PEAP 认证
    # 802-1x.eap peap
    
    # 用户名
    # 802-1x.identity "$peap_name"
    
    # 密码
    # 802-1x.password "$peap_passed"
    # 指定 PEAP 的第二阶段认证类型(通常为 MSCHAPv2)
    # 802-1x.phase2-auth mschapv2
    
    # 如果你的网络有其他认证要求(例如证书),可以使用以下命令配置
    # 802-1x.ca-cert "/path/to/ca-cert.pem"
    
    # 尝试在创建连接时直接设置所有参数
    nmcli connection add type wifi con-name "$new_conn_name" ifname "$device_name" ssid "$wifi_ssid" \
            wifi-sec.key-mgmt wpa-eap \
            802-1x.eap peap \
            802-1x.identity "$peap_name" \
            802-1x.phase2-auth mschapv2


    if [[ $? != 0 ]];then
        echo -e "\n 配置失败,删除WIFI连接配置:$new_conn_name"
        nmcli connection delete $new_conn_name
        exit 0
    else
        echo -e "\n 配置成功,启动连接配置:$new_conn_name"
        nmcli connection up "$new_conn_name" --ask
    fi

    device_info
    connect_info
}



if [[ $device_name == "" ]];then
    device_info

    echo -e "使用说明:"
    Usage
fi

nmcli device status | grep $device_name | grep wifi
if [[ $? != 0 ]];then
    echo -e "没有找到无线网卡:$device_name, 请确认"
    device_info
    exit 0
fi


device_info
connect_info
create_conn

使用参考

# 测试网卡名称 wlx6c1ff737422f
./nmcli_ctl.sh wlx6c1ff737422f

wlx6c1ff737422f          wifi      已断开  --                 
p2p-dev-wlx6c1ff737422f  wifi-p2p  已断开  --                 

网卡信息:
------
DEVICE                   TYPE      STATE   CONNECTION         
enp1s0                   ethernet  已连接  Wired connection 1 
wlp2s0                   wifi      已断开  --                 
wlx6c1ff737422f          wifi      已断开  --                 
p2p-dev-wlx6c1ff737422f  wifi-p2p  已断开  --                 
veth1fb89c8b             ethernet  未托管  --                 
lo                       loopback  未托管  --                 

当前连接信息:
------
NAME                UUID                                  TYPE      DEVICE 
Wired connection 1  c0c2fa6e-e4ad-46d0-902f-ce40647a5b92  ethernet  enp1s0 

寻找网卡wlx6c1ff737422f的目标网络CMCC-5G
------
        4C:EF:56:82:92:3E  CMCC-5G       Infra  40    540 Mbit/s  100     ▂▄▆█  WPA1 WPA2 802.1X 
        4C:EF:56:02:92:3E  CMCC-5G       Infra  11    130 Mbit/s  87      ▂▄▆█  WPA1 WPA2 802.1X 
        4C:EF:56:82:91:C9  CMCC-5G       Infra  48    540 Mbit/s  72      ▂▄▆_  WPA1 WPA2 802.1X 
        4C:EF:56:02:91:C9  CMCC-5G       Infra  1     130 Mbit/s  50      ▂▄__  WPA1 WPA2 802.1X 

开始为网卡wlx6c1ff737422f创建WIFI连接配置:CMCC-5G_wlx6c1ff737422f
连接 "CMCC-5G_wlx6c1ff737422f" (9f00d06f-6394-4ca8-a55a-0f2cc9262697) 已成功添加。

配置成功,启动连接配置:CMCC-5G_wlx6c1ff737422f
需要密码或密钥来访问无线网络 "CMCC-5G"。
用户名 (802-1x.identity): myname
需要密码或密钥来访问无线网络 "CMCC-5G"。
密码 (802-1x.password): ••••••
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/25)

网卡信息:
------
DEVICE                   TYPE      STATE   CONNECTION               
enp1s0                   ethernet  已连接  Wired connection 1       
wlx6c1ff737422f          wifi      已连接  CMCC-5G_wlx6c1ff737422f 
wlp2s0                   wifi      已断开  --                       
p2p-dev-wlx6c1ff737422f  wifi-p2p  已断开  --                       
veth1fb89c8b             ethernet  未托管  --                       
lo                       loopback  未托管  --                       

当前连接信息:
------
NAME                      UUID                                  TYPE      DEVICE          
Wired connection 1        c0c2fa6e-e4ad-46d0-902f-ce40647a5b92  ethernet  enp1s0          
CMCC-5G_wlx6c1ff737422f  9f00d06f-6394-4ca8-a55a-0f2cc9262697  wifi      wlx6c1ff737422f
posted @ 2025-06-11 16:16  BrianSun  阅读(115)  评论(0)    收藏  举报