Linux常用命令-nmcli

命令

nmcli

描述

command-line tool for controlling NetworkManager
NetworkManager的命令行工具

用法

1
nmcli [OPTIONS] OBJECT { COMMAND | help }

选项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Options:
-a, --ask ask for missing parameters
-c, --colors auto|yes|no 是否显示高亮,默认高亮
-e, --escape yes|no escape columns separators in values
-f, --fields <field,...>|all|common 显示指定列,可选DEVICE,TYPE,STATE等,可忽略大小写
-g, --get-values <field,...>|all|common 等同于-m tabular -t -f
-m, --mode tabular|multiline 显示格式,表格或多行显示
-o, --overview 显示概览
-p, --pretty 优化输出格式
-s, --show-secrets 允许显示密码
-t, --terse 简洁输出,用冒号:作为分隔符
-w, --wait <seconds> 设置超时时间

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 {status | hostname | permissions | logging} [ARGUMENTS...]
nmcli networking {on | off | connectivity} [ARGUMENTS...]
nmcli radio {all | wifi | wwan} [ARGUMENTS...]
nmcli connection {show | up | down | modify | add | edit | clone | delete | monitor | reload | load | import | export} [ARGUMENTS...]
nmcli device {status | show | set | connect | reapply | modify | disconnect | delete | monitor | wifi | lldp} [ARGUMENTS...]
nmcli agent {secret | polkit | all}

注意

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
$ nmcli --version
nmcli tool, version 1.18.8-2.el7_9
# 查看帮助示例
$ man nmcli-examples

# -f 显示指定列
$ nmcli -f device,state d
DEVICE STATE
eth0 connected
docker0 unmanaged
lo unmanaged
# -g 显示指定列,并简化显示
$ nmcli -g device,state d
eth0:connected
docker0:unmanaged
lo:unmanaged
# -t 简洁显示,冒号分隔
$ nmcli -t d
eth0:ethernet:connected:eth0
docker0:bridge:unmanaged:
lo:loopback:unmanaged:
# -p 优化显示
$ nmcli -p d
=====================
Status of devices
=====================
DEVICE TYPE STATE CONNECTION
---------------------------------------------------------------
eth0 ethernet connected eth0
docker0 bridge unmanaged --
lo loopback unmanaged --
# -m -t 组合显示
$ nmcli -m mul -t d
DEVICE:eth0
TYPE:ethernet
STATE:connected
CONNECTION:eth0
DEVICE:docker0
TYPE:bridge
STATE:unmanaged
CONNECTION:
DEVICE:lo
TYPE:loopback
STATE:unmanaged
CONNECTION:

# 默认显示的信息
$ nmcli
eth0: connected to eth0
"Intel 82545EM"
ethernet (e1000), 00:50:56:3A:5B:E6, hw, mtu 1500
ip4 default
inet4 192.168.31.11/24
route4 192.168.31.0/24
route4 0.0.0.0/0
inet6 fe80::6bc0:6af2:4032:645b/64
route6 fe80::/64
docker0: unmanaged
"docker0"
bridge, 02:42:DC:4D:E4:B7, sw, mtu 1500
lo: unmanaged
"lo"
loopback (unknown), 00:00:00:00:00:00, sw, mtu 65536
DNS configuration:
servers: 192.168.31.1 223.5.5.5
interface: eth0
# 查看设备
$ nmcli dev
DEVICE TYPE STATE CONNECTION
eth0 ethernet connected eth0
docker0 bridge unmanaged --
lo loopback unmanaged --
# 查看连接
$ nmcli con
NAME UUID TYPE DEVICE
eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 ethernet eth0


# 查看NetworkManager服务是否运行
nmcli -t -f RUNNING general
# 显示NetworkManager的总体状态
nmcli -t -f STATE general
# 关闭wifi
nmcli radio wifi off
# 显示所有连接
nmcli connection show
# 更改eth0网卡的配置文件,手动指定静态IP
nmcli con mod eth0 ipv4.method manual ipv4.addr "192.168.11.23/24,172.16.10.5/16"
# 配置eth0网卡增加一个DNS地址,增加使用+,删除使用-
nmcli con modify eth0 +ipv4.dns 8.8.8.8
# 删除指定的IP地址
nmcli con modify eth0 -ipv4.addresses "172.16.10.5/16"
# 查看eth0网卡详情
nmcli -p connection show eth0
# 创建eth1网卡配置文件ifcfg-eth1
$ nmcli con add con-name eth1 type ethernet ifname eth1
# 手动添加IP地址
$ nmcli con modify eth1 ipv4.method manual ipv4.addresses "192.168.11.12/24"
# 启用eth1网卡配置文件,启用up,停用down
$ nmcli con up eth1
# 删除ifcfg-eth1配置文件
$ nmcli con del eth1
# 显示所有设备状态
nmcli device status
# 显示wifi列表
nmcli dev wifi
# 创建一个名称为ap的wifi配置,SSID为ap,密码为12345
nmcli dev wifi con "ap" password 12345 name "ap"
# 使用ap的wifi配置文件连接wifi
nmcli con up id "ap"

# 有时恢复挂起的vmware虚拟机后没有ip,需要重新激活网卡连接,开启NM服务
nmcli dev con eth0
nmcli dev
nmcli n on
nmcli n

# 配置bond,team,bridge前需要先备份原有的网卡配置,避免多个配置文件冲突
cd /etc/sysconfig/network-scripts
mv ifcfg-eth1 ifcfg-eth1.bak
mv ifcfg-eth2 ifcfg-eth2.bak

# 配置bond,创建bond0网卡,绑定eth1和eth2到bond0
$ nmcli con add type bond con-name bond0 ifname bond0 mode active-backup ip4 192.168.10.10/24
$ nmcli con add type bond-slave con-name bond0-eth1 ifname eth1 master bond0
$ nmcli con add type bond-slave con-name bond0-eth2 ifname eth2 master bond0
$ nmcli con up bond0
$ nmcli con up bond0-eth1
$ nmcli con up bond0-eth2
# 查看bond0信息
$ cat /proc/net/bonding/bond0
# 停止bond0并删除配置文件
$ nmcli con down bond0
$ nmcli con delete bond0 bond0-eth1 bond0-eth2

# 配置team
# config格式:'{"runner": {"name": "METHOD"}}',runner和name是固定不变的,METHOD 可以是 broadcast,roundrobin,activebackup,loadbalance,lacp
$ nmcli con add type team con-name team0 ifname team0 config '{"runner":{"name":"activebackup"}}' ip4 192.168.10.10/24
$ nmcli con add type team-slave con-name team0-eth1 ifname eth1 master team0
$ nmcli con add type team-slave con-name team0-eth2 ifname eth2 master team0
$ nmcli con up team0
$ nmcli con up team0-eth1
$ nmcli con up team0-eth2
# 查看team0工作状态
$ teamdctl team0 state
# 停止team0并删除配置文件
$ nmcli con down team0
$ nmcli con delete team0 team0-eth1 team0-eth2

# 配置bridge
$ nmcli con add type bridge con-name bridge0 ifname bridge0 ip4 192.168.10.10/24
$ nmcli con add type bridge-slave con-name bridge0-eth1 ifname eth1 master bridge0
$ nmcli con add type bridge-slave con-name bridge0-eth2 ifname eth2 master bridge0
$ nmcli con modify bridge0 bridge.stp no
$ nmcli con down bridge0
$ nmcli con up bridge0
$ nmcli con up bridge0-eth1
$ nmcli con up bridge0-eth2
# 查看网桥,brctl命令需要安装bridge-utils软件包
$ brctl show
# 删除网桥
$ nmcli con down bridge0
$ nmcli con delete bridge0 bridge0-eth1 bridge0-eth2

# 配置eth1网卡
$ nmcli con add con-name eth1 ifname eth1 type ethernet ip4 192.168.10.10/24 gw4 192.168.10.1
$ nmcli con mod eth1 ipv4.dns "8.8.8.8 8.8.4.4"
$ nmcli con mod eth1 +ipv4.dns 1.2.3.4
$ nmcli con mod eth1 ipv6.dns "2001:4860:4860::8888 2001:4860:4860::8844"
$ nmcli -p con show eth1

# 查看网卡的指定信息,如IP,DNS
$ nmcli -g ipv4.addresses connection show eth1
192.168.10.10/24
$ nmcli -g ipv4.addresses,ipv4.dns connection show eth1
192.168.10.10/24
8.8.8.8,8.8.4.4,1.2.3.4
$ nmcli -g ipv4 connection show eth1
ipv4:manual:8.8.8.8,8.8.4.4,1.2.3.4:: :0:192.168.10.10/24:192.168.10.1::-1:0::no:no::0:yes:::no:yes:-1
# ip4的写法部分接口信息显示为空,推荐使用上面的ipv4
$ nmcli -g ip4 connection show eth1
$ nmcli -g ip4 connection show eth0
IP4:192.168.31.11/24:192.168.31.1:dst = 192.168.31.0/24, nh = 0.0.0.0, mt = 100 | dst = 0.0.0.0/0, nh = 192.168.31.1, mt = 100:192.168.31.1 | 223.5.5.5::