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

成功!

相关推荐
wowocpp6 小时前
ubuntu 22.04 硬件配置 查看 显卡
linux·运维·ubuntu
山河君7 小时前
ubuntu使用DeepSpeech进行语音识别(包含交叉编译)
linux·ubuntu·语音识别
knighthood20017 小时前
解决:ros进行gazebo仿真,rviz没有显示传感器数据
c++·ubuntu·ros
wowocpp18 小时前
ubuntu 22.04 server 安装 anaconda3
linux·运维·ubuntu
wowocpp20 小时前
ubuntu 22.04 防火墙 ufw
linux·运维·ubuntu
188_djh1 天前
# Python基础到实战一飞冲天(一)--linux基础(一)
linux·开发语言·python·ubuntu·centos·os·operationsystem
winds~1 天前
ubuntu中安装matplotcpp绘图
linux·运维·ubuntu
UsamaBinLaden1 天前
Ubuntu和Debian系列的Release默认shell解释器变更
linux·ubuntu·debian
黑风风2 天前
Ubuntu 22 安装 Apache Doris 3.0.3 笔记
笔记·ubuntu·apache
knighthood20012 天前
ros中仿真编写launch时robot_state_publisher,output参数
c++·ubuntu·ros