参考Ubuntu官方文档Red Hat,本文采用Google翻译

NETWORKMANAGER 简介

介绍

NetworkManager 提供的默认联网服务是一个动态网络控制和配置守护进程,它尝试在其可用时保持网络设备和连接处于活动状态。仍支持传统 ifcfg 类型配置文件。详情请查看 第 1.8 节 “NetworkManager 及网络脚本”

表 1.1. 联网工具及应用程序概述

应用程序或工具 描述
NetworkManager 默认联网守护进程
nmtui NetworkManager 的使用光标的简单文本用户界面(TUI)
nmcli 允许用户及脚本与 NetworkManager 互动的命令行工具
control-center GNOME Shell 提供的图形用户界面工具
nm-connection-editor 这是一个 GTK+ 3 应用程序,可用于尚未由 control-center 处理的某些任务的。

NetworkManager 可用于以下连接类型:以太网、VLAN、网桥、绑定、成组、Wi-Fi、移动宽带(比如移动网络 3G)及 IP-over-InfiniBand。在这些连接类型中,NetworkManager 可配置网络别名、IP 地址、静态路由器、DNS 信息及 VPN 连接以及很多具体连接参数。最后,NetworkManager 通过 D-bus 提供 API,D-Bus 允许应用程序查询并控制网络配置及状态。

安装 NETWORKMANAGER

默认在 ubuntu 中安装 NetworkManager。必要时可作为 root 用户运行以下命令:

sudo apt-get install network-manager

NetworkManager 守护进程

安装成功完成后,NetworkManager服务将在后台运行。您可以通过以下方式查看其当前状态:

{19:30}~/Documents/proj ➭ $ systemctl status network-manager.service
● NetworkManager.service - Network Manager
Loaded: loaded (/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2021-01-08 15:31:11 CST; 4h 0min ago
Docs: man:NetworkManager(8)
Main PID: 915 (NetworkManager)
Tasks: 4 (limit: 4915)
CGroup: /system.slice/NetworkManager.service
├─ 915 /usr/sbin/NetworkManager --no-daemon
└─3671 /sbin/dhclient -d -q -sf /usr/lib/NetworkManager/nm-dhcp-helper -pf /run/dhclient

现在,您已经成功安装了NetworkManager。

探索网络状态

本节说明如何使用nmcli命令行工具检查NetworkManager的连接和设备的状态。

显示NetworkManager已知设备的状态:

$ nmcli d

显示有关此选项的更多信息:

nmcli d --help

显示每个NetworkManager连接的当前状态:

$ nmcli c

命令“ c”用于连接,但是实际命令“ connections”的缩写形式。对于devices命令,“-help”显示有关此选项的更多信息。最后,我们可以通过以下方式查看无线接口的状态,包括WiFi和WWAN(蜂窝):

$ nmcli r
WIFI-HW WIFI WWAN-HW WWAN
enabled enabled enabled enabled

确保启用WiFi / WWAN无线电很重要,这样各个连接类型才能建立连接(我们将在以下部分中指定如何进行连接)。与其他命令一样,“-help”显示用法信息。

观察NetworkManage活动(连接状态,设备或连接属性的更改):

$ nmcli monitor

请参阅nmcli连接监视器和nmcli设备监视器,以监视某些连接或设备中的更改。

配置WiFi连接

本节说明如何建立WiFi连接。它涵盖了创建和修改连接以及直接连接。

建立无线连接

本节将说明如何建立与无线网络的wifi连接。请注意,直接连接将隐式创建一个连接(可以通过“ nmcli c”看到)。这样的命名将遵循“ SSID N”模式,其中N是数字。

首先,确定WiFi接口的名称:

$ nmcli d
DEVICE TYPE STATE CONNECTION
wlo1 wifi 已连接 TP-LINK_5G_1E0C
20:F4:78:0F:A1:2C bt 已断开 --
enp2s0f1 ethernet 不可用 --
lo loopback 未托管 --

确保WiFi无线电已打开(这是其默认状态):

$ nmcli r wifi on

然后,列出可用的WiFi网络:

$ nmcli d wifi list
IN-USE SSID MODE CHAN RATE SIGNAL BARS SECURITY
* TP-LINK_5G_1E0C Infra 161 270 Mbit/s 73 ▂▄▆_ WPA1 WPA2

例如,要连接到接入点my_wifi,可以使用以下命令:

$ nmcli d wifi connect my_wifi password <password>

<password>是用于连接的密码,需要使用8-63个字符或64个十六进制字符来指定完整的256位密钥。

连接到隐藏的网络

隐藏网络是普通的无线网络,除非请求,否则根本不会广播其SSID。这意味着无法搜索其名称,并且必须从其他来源知道它的名称。

发出以下命令来创建与隐藏网络<ssid>关联的连接:

$ nmcli c add type wifi con-name <name> ifname wlan0 ssid <ssid>
$ nmcli c modify <name> wifi-sec.key-mgmt wpa-psk wifi-sec.psk <password>

现在,您可以通过键入以下内容建立连接:

$ nmcli c up <name>

<name>是为连接指定的任意名称,而<password>是网络的密码。为了指定完整的256位密钥,它必须具有8-63个字符或64个十六进制字符。

更多的信息

您可以在以下页面上找到更多信息和更详细的示例:

配置WiFi接入点

可以使用网络管理器快照创建WiFi接入点。这可以通过运行来完成

$ nmcli d wifi hotspot ifname <wifi_iface> ssid <ssid> password <password>

哪里<wifi_iface>是wifi网络接口,<ssid>是我们正在创建的AP的SSID,连接到该设备的设备可以看到它,并且<password>是访问密码(该密码必须介于8-63个字符或64个十六进制字符之间)。如果命令成功,NM将创建一个名为Hotspot <N>的连接。

默认情况下,创建的AP提供一个共享连接,因此,如果提供AP的设备也可以访问,则连接到它的设备应该能够访问Internet。

NMCLI常用的一些命令

用户和脚本都可使用命令行工具 nmcli 控制 NetworkManager。该命令的基本格式为:

nmcli OPTIONS OBJECT { COMMAND | help }

其中 OBJECT 可为 generalnetworkingradioconnectiondevice 之一。最常用的选项为:-t, --terse(用于脚本)、-p, --pretty 选项(用于用户)及 -h, --help 选项。在 nmcli 中采用命令完成功能,无论何时您不确定可用的命令选项时,都可以按 Tab 查看。有关选项及命令的完整列表,请查看 nmcli(1) man page。

nmcli 工具有一些内置上下文相关的帮助信息。例如:运行以下两个命令,并注意不同之处:

$ nmcli help
Usage: nmcli [OPTIONS] OBJECT { COMMAND | help } OPTIONS
-t[erse] terse output
-p[retty] pretty output
-m[ode] tabular|multiline output mode
-c[olors] auto|yes|no whether to use colors in output
-f[ields] <field1,field2,...>|all|common specify fields to output
-g[et-values] <field1,field2,...>|all|common shortcut for -m tabular -t -f
-e[scape] yes|no escape columns separators in values
-a[sk] ask for missing parameters
-s[how-secrets] allow displaying passwords
-w[ait] <seconds> set timeout waiting for finishing operations
-v[ersion] show program version
-h[elp] print this help OBJECT
g[eneral] NetworkManager's general status and operations
n[etworking] overall networking control
r[adio] NetworkManager radio switches
c[onnection] NetworkManager's connections
d[evice] devices managed by NetworkManager
a[gent] NetworkManager secret agent or polkit agent
m[onitor] monitor NetworkManager changes
$ nmcli general help
用法:nmcli general { 命令 | help } 命令 := { status | hostname | permissions | logging } status hostname [<主机名>] permissions logging [level <日志级别>] [domains <日志域>]

在上面的第二个示例中,这个帮助信息与对象 general 有关。

nmcli-examples(5) man page 有很多有帮助的示例,节选如下:

基本示例

显示 NetworkManager 总体状态:

nmcli general status

要控制 NetworkManager 日志记录:

nmcli general logging

要显示所有链接:

nmcli connection show

要只显示当前活动链接,如下所示添加 -a, --active

nmcli connection show --active

显示由 NetworkManager 识别到设备及其状态:

nmcli device status

可简化命令并省略一些选项。例如:可将命令

nmcli connection modify id 'MyCafe' 802-11-wireless.mtu 1350

简化为

nmcli con mod MyCafe 802-11-wireless.mtu 1350

可省略 id 选项,因为在这种情况下对于 nmcli 来说连接 ID(名称)是明确的。您熟悉这些命令后可做进一步简化。例如:可将

nmcli connection add type ethernet

改为

nmcli c a type eth

注意

如有疑问,请使用 tab 完成功能。

使用 nmcli 启动和停止接口

可使用 nmcli 工具启动和停止任意网络接口,其中包括主接口。例如:

nmcli connection down connection-name
nmcli connection up connection-name
nmcli device disconnect interface-name
nmcli device connect interface-name

注意

建议使用 nmcli dev disconnect iface *iface-name* 命令,而不是 nmcli con down id *id-string* 命令,因为连接断开可将该接口放到“手动”模式,这样做用户让 NetworkManager 启动某个连接前,或发生外部事件(比如载波变化、休眠或睡眠)前,不会启动任何自动连接。

nmcli 互动连接编辑器

nmcli 工具有一个互动连接编辑器。请运行以下命令使用该工具:

nmcli con edit

此时会提示您从显示的列表中选择有效连接类型。输入连接类型后,就会为您显示 nmcli 提示符。如果您熟悉连接类型,也可以在 nmcli con edit 命令中添加 type 选项,从而直接进入提示符。编辑现有连接配置的格式如下:

nmcli con edit [id | uuid | path] ID

要添加和编辑新连接配置,请采用以下格式:

nmcli con edit [type new-connection-type] [con-name new-connection-name]

nmcli 提示符后输入 help 查看可用命令列表。请使用 describe 命令获取设置及其属性描述,格式如下:

describe setting.property

例如:

nmcli> describe team.config

了解 nmcli 选项

很多 nmcli 命令是可以顾名思义的,但有几个选项需要进一步了解:

type — 连接类型。

允许值为:adsl, bond, bond-slave, bridge, bridge-slave, bluetooth, cdma, ethernet, gsm, infiniband, olpc-mesh, team, team-slave, vlan, wifi, wimax.

每个连接了类型都有具体类型的命令选项。按 Tab 键查看该列表,或查看 nmcli(1) man page 中的 TYPE_SPECIFIC_OPTIONS 列表。type 选项可用于如下命令:nmcli connection addnmcli connection edit

con-name — 为连接配置分配的名称。

如果未指定连接名称,则会以如下格式生成名称:

 type-ifname[-number]

连接名称是 connection profile 的名称,不应与代表某个设备的名称混淆(比如 wlan0、ens3、em1 等等)。虽然用户可为根据接口为链接命名,但这是两回事。一个设备可以有多个连接配置文件。这对移动设备,或者在不同设备间反复切换网线时很有帮助。与其编辑该配置,不如创建不同的配置文件,并根据需要将其应用到接口中。id 选项也是指连接配置文件名称。

id — 用户为连接配置文件分配的身份字符串。

可在 nmcli connection 命令中用来识别某个连接的 ID。输出结果中的 NAME 字段永远代表连接 ID(名称)。它指的是 con-name 给出的同一连接配置文件名称。

uuid — 系统为连接配置文件分配的独有身份字符串。

可在 nmcli connection 命令中用来识别某个连接的 UUID。

创建连接

nmcli connection add type ethernet con-name connection-name ifname interface-name
nmcli connection add type ethernet con-name connection-name ifname interface-name ip4 address gw4 address ## e.g. 创建一个基于eth1接口的连接
# 创建动态连接,即BOOTPROTO默认为DHCP
[root@localhost ~]# nmcli c add type eth con-name dynamic-eth1 ifname eth1
Connection 'dynamic-eth1' (9c0ad8a9-21f6-40b5-9313-e5c7e4b356f1) successfully added.
# 创建静态连接
[root@localhost ~]# nmcli connection add type eth con-name static-eth1 ifname eth1 ip4 172.16.60.10/24
# nmcli connection add type eth con-name static-eth1 ifname eth1 ip4 172.16.60.10/24 gw4 192.168.60.1
Connection 'static-eth1' (0640bf7f-9490-44a8-be96-2e710fb650e6) successfully added.

创建连接后,NetworkManager 自动将 connection.autoconnect 设定为 yes。还会将设置保存到 /etc/sysconfig/network-scripts/ connection-name 文件中,且自动将 ONBOOT 参数设定为 yes。

激活连接

nmcli connection up connection-name

## e.g. 激活eth1接口的static-eth1连接
[root@localhost ~]# nmcli c up static-eth1
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)

修改连接的IP地址

# 可修改的属性可通过以下命令查看
nmcli c show static-eth1
# 修改命令
nmcli connection modify [--temporary] [id | uuid | path] <ID> ([+|-]<setting>.<property> <value>)+ ## e.g. 修改连接static-eth1的ip地址
[root@localhost ~]# ip addr | grep eth1
4: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
inet 172.16.60.10/24 brd 172.16.60.255 scope global eth1
[root@localhost ~]# nmcli c mod static-eth1 ipv4.addr 172.16.60.20/24
[root@localhost ~]# nmcli c up static-eth1
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
[root@localhost ~]# ip a | grep eth1
4: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
inet 172.16.60.20/24 brd 172.16.60.255 scope global eth1

配置连接的DNS

# 设定单个DNS
nmcli connection modify static-eth1 ipv4.dns DNS1
# 设定多个DNS
nmcli connection modify static-eth1 ipv4.dns "DNS1 DNS2"
# 以上命令会替换之前的DNS设置
# 添加某个连接的DNS,需要使用前缀“+”
nmcli connection modify static-eth1 +ipv4.dns DNS3 ## e.g. 配置static-eth1连接的DNS
[root@localhost ~]# grep DNS /etc/sysconfig/network-scripts/ifcfg-static-eth1
IPV6_PEERDNS=yes
[root@localhost ~]# nmcli c mod static-eth1 ipv4.dns "114.114.114.114 223.5.5.5"
# 修改连接后,需要重新激活
[root@localhost ~]# nmcli c up static-eth1
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
[root@localhost ~]# grep DNS /etc/sysconfig/network-scripts/ifcfg-static-eth1
DNS1=114.114.114.114
DNS2=223.5.5.5
IPV6_PEERDNS=yes
# 新增DNS
[root@localhost ~]# nmcli c mod static-eth1 +ipv4.dns 223.5.5.6
[root@localhost ~]# nmcli c up static-eth1
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)
[root@localhost ~]# grep DNS /etc/sysconfig/network-scripts/ifcfg-static-eth1
DNS1=114.114.114.114
DNS2=223.5.5.5
DNS3=223.5.5.6
IPV6_PEERDNS=yes

使用以下命令在Linux上创建Wi-Fi热点 nmcli

原始帖子: https://unix.stackexchange.com/a/310699

nmcli con add type wifi ifname wlan0 con-name Hostspot autoconnect yes ssid Hostspot
nmcli con modify Hostspot 802-11-wireless.mode ap 802-11-wireless.band bg ipv4.method shared
nmcli con modify Hostspot wifi-sec.key-mgmt wpa-psk
nmcli con modify Hostspot wifi-sec.psk "veryveryhardpassword1234"
nmcli con up Hostspot

注意

如果重启后nmcli con up Hotspot不起作用

使用此命令启动Hotspot

UUID=$(grep uuid /etc/NetworkManager/system-connections/Hotspot | cut -d= -f2)
nmcli con up uuid $UUID

网络管理之命令行工具nmcli的更多相关文章

  1. Nmcli 网络管理命令行工具基础

    介绍 在本教程中,我们会在CentOS / RHEL 7中讨论网络管理命令行工具NetworkManager command line tool,也叫nmcli.那些使用ifconfig的用户应该在C ...

  2. Ubuntu 16.04桌面版GUI网络配置工具NetworkManager的命令行工具nm-tool无法使用的问题

    说明: 1.Ubuntu中分桌面版和服务器版,而这两个版本在网络管理方面使用的工具都不一样,尤其是在桌面版,使用了NetworkManager进行管理. 2.服务器版使用的是命令行配置,而桌面版包含了 ...

  3. windows下的命令行工具babun

    什么是babun babun是windows上的一个第三方shell,在这个shell上面你可以使用几乎所有linux,unix上面的命令,他几乎可以取代windows的shell.用官方的题目说就是 ...

  4. 『.NET Core CLI工具文档』(一).NET Core 命令行工具(CLI)

    说明:本文是个人翻译文章,由于个人水平有限,有不对的地方请大家帮忙更正. 原文:.NET Core Command Line Tools 翻译:.NET Core命令行工具 什么是 .NET Core ...

  5. 命令行工具aspnet_regiis.exe实现加密和解密web.config

    命令行工具aspnet_regiis.exe,是一个类似于DOS的命令工具,称之为命令解释器.使用命令行工具加密和解密web.config文件中的数据库连接字符串时,只需要简单的语法命令即可. 加密语 ...

  6. nodejs 编写(添加时间戳)命令行工具 timestamp

    Nodejs除了编写服务器端程序还可以编写命令行工具,如gulp.js就是Nodejs编写的. 接下来我们来实现一个添加时间戳的命令: $ timestamp action https://www.n ...

  7. 如何用Node编写命令行工具

    0. 命令行工具 当全局安装模块之后,我们可以在控制台下执行指定的命令来运行操作,如果npm一样.我把这样的模块称之为命令行工具模块(如理解有偏颇,欢迎指正) 1.用Node编写命令行工具 在Node ...

  8. Orchard中的命令行工具

    在Orchard中提供了一个命令行工具,我们可以使用这个命令行工具创建用户.创建博客.生成代码.配置网站.打包模块等.并且这个命令行工具是可以扩充的,只要我们在自己开发的模块中创建一个Command类 ...

  9. Linux 性能监控之命令行工具

    引言 对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.这些命令行工具可以在各种Linux系统下使用,可以用于监控和查找产生性能问题的原因.这个命令行工具列表提供了足够的 ...

随机推荐

  1. GAN实战笔记——第一章GAN简介

    GAN简介 一.什么是GAN GAN是一类由两个同时训练的模型组成的机器学习技术:一个是生成器,训练其生成伪数据:另一个是鉴别器,训练其从真实数据中识别伪数据. 生成(generative)一词预示着 ...

  2. Golang通脉之函数

    函数是组织好的.可重复使用的.用于执行指定任务的代码块. Go语言中支持函数.匿名函数和闭包,并且函数在Go语言中属于"一等公民". 函数定义 Go语言中定义函数使用func关键字 ...

  3. SpringBoot打包到docker(idea+传统方式)

    作者:故事我忘了¢个人微信公众号:程序猿的月光宝盒 目录 1. 方式1.通过idea 远程发布 1.1 修改docker.service文件 1. 进入服务器 2. 修改ExecStart行为下面内容 ...

  4. k8s 关于Job与Cronjob

    在Kubernetes 中通过创建工作负载资源 Job 可完成大型计算以及一些批处理任务.比如 Job 转码文件.获取部分文件和目录,机器学习中的训练任务等.这篇小作文我们一起来了解 k8s 中关于 ...

  5. pycharm 服务器连接及一些问题解决

    主要介绍一下如何使用pycharm连接服务器并在服务器上炼丹,并对遇到的一个小问题进行说明. 目录 1,SSH连接 2,linux常用命令 3,配置anaconda 4,运行代码 5,一个常见错误 1 ...

  6. Scrum Meeting 0503

    零.说明 日期:2021-5-3 任务:简要汇报两日内已完成任务,计划后两日完成任务 一.进度情况 组员 负责 两日内已完成的任务 后两日计划完成的任务 qsy PM&前端 完成登录.后端管理 ...

  7. [no code][scrum meeting] Alpha 1

    项目 内容 会议时间 2020-04-06 会议主题 团队任务分析与拆解 会议时长 30min 参会人员 全体成员 $( "#cnblogs_post_body" ).catalo ...

  8. BUAA-OO-最后单元总结

    BUAA-OO-最后单元总结 经过一学期的魔鬼"折磨"后,OO课程终于要结束了!总体来说我对于作业的总体完成情况还是比较满意的,希望最后可以取得一个理想成绩. 一.第四单元架构设计 ...

  9. spring cloud zuul的回退

    当我们使用 @EnableZuulProxy 注解来开启zuul的路由时,默认在@EnableZuulProxy注解上就包含了@EnableCircuitBreaker注解,即开启了断路器功能.那么在 ...

  10. 开关电源(DC-DC)与LDO电源的区别---纹波

    https://blog.csdn.net/edadoc2013/article/details/78435775