debian12 基于nmcli的wifi网卡连接PEAP网络脚本
nmcli_ctl.sh
PS:
- 这个脚本可以半自动实现wifi网卡连接PEAP网络,遗憾的是添加网络成功后,会有一个交互的过程,需要回车后再次输入密码;
- 如果通过桌面配置了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