用命令行工具(nmcli)模仿ubuntu21图形界面的热点功能

前提条件:需要安装的插件

bash 复制代码
sudo apt-get install hostapd dnsmasq

1、确定 WiFi 接口名称:

首先,你需要确定你的无线网络接口的名称。你可以使用以下命令列出所有网络接口:

bash 复制代码
nmcli device status

开启 WiFi 接口:

如果您发现无线接口没有开启,可以使用以下命令来开启它:

bash 复制代码
nmcli radio wifi on

2、创建热点连接配置:

使用 nmcli 创建一个新的网络连接配置,设置为热点模式。你需要指定热点的 SSID(网络名称)和密码。例如:

bash 复制代码
nmcli con add type wifi con-name MyHotspot ifname wlan0 ssid MyHotspot \
802-11-wireless.mode ap 802-11-wireless.band bg ipv4.method shared \
wifi-sec.key-mgmt wpa-psk wifi-sec.psk "myhotspotpassword"

这里,con-name 是你为热点定义的名称,ifname 是你的无线接口名称,ssid 是热点的网络名称,802-11-wireless.mode ap 设置模式为接入点,ipv4.method shared 允许共享有线连接的互联网,wifi-sec.key-mgmt wpa-psk 设置 WPA/WPA2 PSK 安全模式,wifi-sec.psk 设置密码。
3、启动热点:

创建连接配置后,使用以下命令启动热点:

bash 复制代码
nmcli con up MyHotspot

4、验证热点状态:

使用以下命令检查热点的状态:

bash 复制代码
nmcli con show MyHotspot

5、连接其他设备:

现在,你可以使用其他设备搜索 WiFi 网络,并连接到你创建的热点 MyHotspot。

6、关闭热点

如果你需要关闭热点,可以使用以下命令:

bash 复制代码
nmcli con down MyHotspot

拓展:
列出所有网络连接,包括热点,使用:

bash 复制代码
nmcli connection show

您可以使用 nmcli connection delete 命令删除这些热点。假设您想删除所有列出的热点,可以使用以下命令:

bash 复制代码
nmcli connection delete <connection-name-1> <connection-name-2> ...

修改热点的SSID和密码:

使用 nmcli connection modify 命令来更改热点的SSID和密码。假设您的热点连接名称是 MyHotspot,新的热点名称是 NewHotspotSSID,新的密码是 NewPassword,您可以使用以下命令:

bash 复制代码
nmcli connection modify MyHotspot ssid NewHotspotSSID wifi-sec.psk NewPassword

在这个命令中:

MyHotspot 是当前热点的连接名称。

ssid NewHotspotSSID 设置新的热点名称。

wifi-sec.psk NewPassword 设置新的WPA/WPA2 PSK密码。

重新激活热点连接:

修改配置后,您可能需要重新激活热点连接以使更改生效:

bash 复制代码
nmcli connection down MyHotspot
nmcli connection up MyHotspot

最后创建一个热点,指定热点名称、密码、安全设置和监听的ip地址的命令是:

bash 复制代码
nmcli con add type wifi con-name MyHotspot ifname wlan0 ssid MySSID \
802-11-wireless.mode ap 802-11-wireless.band bg \
wifi-sec.key-mgmt wpa-psk wifi-sec.psk "myhotspotpassword" \
ipv4.method manual ipv4.addresses "192.168.42.1/24" \
ipv4.gateway "192.168.42.1" ipv4.dns "8.8.8.8"

还需要修改/etc/dnsmasq.conf才能使用手机正常连接上WiFi热点,即需要分配ip给每个连接的手机。

注意:这时候dnsmasq 默认监听53端口的,很容易和systemd-resolved端口冲突,可以用这个命令查一下

bash 复制代码
sudo netstat -tulpn | grep :53

下面是我自定义的ip地址,都可以自行修改

在文末添加一下文本:

bash 复制代码
port=5353
interface=wlp2s0
dhcp-range=192.168.2.100,192.168.2.200,255.255.255.0,12h
listen-address=192.168.2.1

这将配置 dnsmasq 使用 wlp2s0网卡,分配 IP 地址范围为 192.168.1.100 到 192.168.1.200。这个可以自定义范围,按需填写;租期12小时

改完后需要重启一下NetworkManager,让修改生效

bash 复制代码
sudo systemctl restart NetworkManager

最后打开dnsmasq

bash 复制代码
sudo systemctl start dnsmasq

成功!

相关推荐
Maki Winster1 小时前
在 Ubuntu 下配置 oh-my-posh —— 普通用户 + root 各自使用独立主题(共享可执行)
linux·运维·ubuntu
Imagine Miracle4 小时前
Ubuntu for ARM 更换为阿里云镜像源
arm开发·ubuntu·阿里云
kikikidult18 小时前
(2025.07)解决——ubuntu20.04系统开机黑屏,左上角光标闪烁
笔记·ubuntu
BD_Marathon21 小时前
Ubuntu:Mysql服务器
服务器·mysql·ubuntu
0wioiw01 天前
Ubuntu基础(监控重启和查找程序)
linux·服务器·ubuntu
Tipriest_1 天前
Ubuntu常用的软件格式deb, rpm, dmg, AppImage等打包及使用方法
linux·运维·ubuntu
GBXLUO1 天前
windows的vscode无法通过ssh连接ubuntu的解决办法
vscode·ubuntu
笑衬人心。1 天前
Ubuntu 22.04 修改默认 Python 版本为 Python3 笔记
笔记·python·ubuntu
物联网老王1 天前
Ubuntu Linux Cursor 安装与使用一
linux·运维·ubuntu
fangeqin2 天前
ubuntu源码安装python3.13遇到Could not build the ssl module!解决方法
linux·python·ubuntu·openssl