用命令行工具(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

成功!

相关推荐
odoo-卜永15 分钟前
ubuntu22.04连接爱普生打印机型号L385
linux·经验分享·ubuntu
小麦嵌入式1 小时前
Linux驱动开发实战(十一):GPIO子系统深度解析与RGB LED驱动实践
linux·c语言·驱动开发·stm32·嵌入式硬件·物联网·ubuntu
跳跳糖炒酸奶4 小时前
第四章、Isaacsim在GUI中构建机器人(1): 添加简单对象
人工智能·python·ubuntu·机器人
吃旺旺雪饼的小男孩4 小时前
Ubuntu 22.04 安装和运行 EDK2 超详细教程
linux·运维·ubuntu
Sapphire~8 小时前
odoo-045 ModuleNotFoundError: No module named ‘_sqlite3‘
python·ubuntu·odoo
烨鹰19 小时前
戴尔电脑安装Ubuntu双系统
linux·运维·ubuntu
kfepiza21 小时前
Debian/Ubuntu的networking的`/etc/network/interfaces`配置文件,如何配置route路由
linux·网络·tcp/ip·ubuntu·debian·ip·tcp
姓刘的哦1 天前
Ubuntu环境安装
linux·运维·ubuntu
小小寂寞的城1 天前
Ubuntu里安装Jenkins
ubuntu·ci/cd·docker·jenkins