用于管理网络和显示网络状态的工具(需要开启NetworkManager),nmcli用于创建,显示,编辑,删除,激活和检测网络连接。也能用于管理网络设备
nmcli [OPTIONS] OBJECT { COMMAND | help }
OBJECT包括
g[eneral] NetworkManager的状态和操作
n[etworking] 整体的网络控制
r[adio] NetworkManager radio switches
c[onnection] NetworkManager的连接管理
d[evice] NetworkManager管理的设备
a[gent] NetworkManager secret agent or polkit agent
m[onitor] 监控NetworkManager的变化
nmcli general
nmcli general {status | hostname | permissions | logging} [ARGUMENTS...]
nmcli general status
NetworkManager整体连接状态
# nmcli general status
STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN
connected full enabled enabled enabled enabled
nmcli general hostname [hostname]
获取/修改当前系统hostname,如果没有参数仅打印hostname,当设置了参数,会修改主机名
# 修改当前系统主机名为hal
# nmcli general hostname hal
# 获取当前系统hostname
# nmcli general hostname
hal
nmcli general permissions
显示调用者对NetworkManager提供的各种验证操作(如启用和禁用网络、更改Wi-Fi和WWAN状态、修改连接等)的权限
# nmcli general permissions
PERMISSION VALUE
org.freedesktop.NetworkManager.enable-disable-network yes
org.freedesktop.NetworkManager.enable-disable-wifi yes
org.freedesktop.NetworkManager.enable-disable-wwan yes
org.freedesktop.NetworkManager.enable-disable-wimax yes
org.freedesktop.NetworkManager.sleep-wake yes
org.freedesktop.NetworkManager.network-control yes
org.freedesktop.NetworkManager.wifi.share.protected yes
org.freedesktop.NetworkManager.wifi.share.open yes
org.freedesktop.NetworkManager.settings.modify.system yes
org.freedesktop.NetworkManager.settings.modify.own yes
org.freedesktop.NetworkManager.settings.modify.hostname yes
org.freedesktop.NetworkManager.settings.modify.global-dns yes
org.freedesktop.NetworkManager.reload yes
org.freedesktop.NetworkManager.checkpoint-rollback yes
org.freedesktop.NetworkManager.enable-disable-statistics yes
org.freedesktop.NetworkManager.enable-disable-connectivity-check yes
nmcli general logging [level level] [domains domains...]
获取和修改日志级别和domains
# nmcli general logging
LEVEL DOMAINS
INFO PLATFORM,RFKILL,ETHER,WIFI,BT,MB,DHCP4,DHCP6,PPP,IP4,IP6,AUTOIP4,DNS,VPN,SHARING,SUPPLICANT,AGENTS,SETTINGS,SUSPEND,CORE,DEVICE,OLPC,INFINIBAND,FIREWALL,ADSL,BOND,VLAN,BRIDGE,TEAM,CONCHECK,DCB,DISPATCH,AUDIT,SYSTEMD,PROXY
nmcli networking
nmcli networking { COMMAND | help }
COMMAND := { [ on | off | connectivity ] }
查询NetworkManager状态,开启/禁用网络
nmcli networking on
开启所有接口
# 开启网络
# nmcli networking on
nmcli networking off
禁用所有接口
# 关闭网络
# nmcli networking off
nmcli networking connectivity
检查网络连接状态
# nmcli networking connectivity
full
nmcli connection
管理连接
Usage: nmcli connection { COMMAND | help }
COMMAND := { show | up | down | add | modify | clone | edit | delete | monitor | reload | load | import | export }
show [--active] [--order ]
show [--active] [id | uuid | path | apath] ...
up [[id | uuid | path] ] [ifname ] [ap ] [passwd-file ]
down [id | uuid | path | apath] ...
add COMMON_OPTIONS TYPE_SPECIFIC_OPTIONS SLAVE_OPTIONS IP_OPTIONS [-- ([+|-]. )+]
modify [--temporary] [id | uuid | path] ([+|-]. )+
clone [--temporary] [id | uuid | path ]
edit [id | uuid | path]
edit [type ] [con-name ]
delete [id | uuid | path]
monitor [id | uuid | path] ...
reload
load [ ... ]
import [--temporary] type file
export [id | uuid | path] [
nmcli connection show
查看连接状态
# 查看所有连接状态
# nmcli connection show
NAME UUID TYPE DEVICE
ens33 8da8fe0e-e73b-4fba-b8bf-853ee244df92 ethernet ens33
virbr0 e161deec-055a-41bb-bb59-52ee5fd41ee6 bridge virbr0
# 查看连接已激活的连接
# nmcli connection show --active
NAME UUID TYPE DEVICE
ens33 8da8fe0e-e73b-4fba-b8bf-853ee244df92 ethernet ens33
virbr0 e161deec-055a-41bb-bb59-52ee5fd41ee6 bridge virbr0
# 查看指定连接的具体信息
# nmcli connection show ens33
connection.id: ens33
connection.uuid: 8da8fe0e-e73b-4fba-b8bf-853ee244df92
connection.stable-id: --
connection.type: 802-3-ethernet
connection.interface-name: ens33
connection.autoconnect: yes
connection.autoconnect-priority: 0
connection.autoconnect-retries: -1 (default)
connection.multi-connect: 0 (default)
connection.auth-retries: -1
connection.timestamp: 1569912275
connection.read-only: no
connection.permissions: --
connection.zone: --
connection.master: --
connection.slave-type: --
connection.autoconnect-slaves: -1 (default)
connection.secondaries: --
connection.gateway-ping-timeout: 0
connection.metered: unknown
connection.lldp: default
...........
nmcli connection up [[id | uuid | path] ] [ifname ] [ap ] [passwd-file ]
激活连接
# 基于设备名激活
# nmcli connection up ifname ens33
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)
# 基于配置文件激活
# nmcli connection up /etc/sysconfig/network-scripts/ifcfg-ens33
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)
nmcli connection down [[id | uuid | path] ] [ifname ] [ap ] [passwd-file ]
关闭连接,使用与up类似
nmcli connection modify [--temporary] [id | uuid | path] ([+|-]. )+
编辑属性,空值表示删除属性值,+表示同一个属性添加值,-表示同一属性删除指定值
# 属性可以通过nmcli connection show 设备名去查看有哪些属性
# nmcli connection show ens33
# 添加ipv4.addresses属性
# nmcli connection modify ens33 +ipv4.addresses 192.168.240.205/24
# 启用配置
# nmcli connection up ens33
# 查看是否添加成功
# ip a li dev ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:1d:c6:13 brd ff:ff:ff:ff:ff:ff
inet 192.168.240.200/24 brd 192.168.240.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet 192.168.240.205/24 brd 192.168.240.255 scope global secondary noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::e25e:34df:e1f8:d157/64 scope link tentative noprefixroute
valid_lft forever preferred_lft forever
# 删除ipv4.addresses属性
# nmcli connection modify ens33 -ipv4.addresses 192.168.240.205/24
# 启用配置
# nmcli connection up ens33
# 查看是否删除成功
# ip a li dev ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:1d:c6:13 brd ff:ff:ff:ff:ff:ff
inet 192.168.240.200/24 brd 192.168.240.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::e25e:34df:e1f8:d157/64 scope link noprefixroute
valid_lft forever preferred_lft forever
nmcli connection add COMMON_OPTIONS TYPE_SPECIFIC_OPTIONS SLAVE_OPTIONS IP_OPTIONS [-- ([+|-]. )+]
添加一个连接。用法与modify类似
connection delete [id | uuid | path]
删除连接
nmcli connection load [ ... ]
从磁盘加载文件,比如自己创建了配置文件,则可以使用命令直接加载进来管理
# /etc/sysconfig/network-scripts/ifcfg-ens37 是我自己创建的配置文件
# nmcli connection load /etc/sysconfig/network-scripts/ifcfg-ens37
# nmcli connection
NAME UUID TYPE DEVICE
ens33 8da8fe0e-e73b-4fba-b8bf-853ee244df92 ethernet ens33
ens37 4a5516a4-dfa4-24af-b1c4-e843e312e2fd ethernet ens37
virbr0 e161deec-055a-41bb-bb59-52ee5fd41ee6 bridge virbr0
nmcli connection clone [--temporary] [id | uuid | path ]
克隆连接,uuid会重新生成
# 克隆连接,
# nmcli connection clone ens33 ens37
nmcli connection monitor [id | uuid | path] ID...
监控连接配置,如果连接被修改,命令行会输出被修改的行
nmcli device
查看/管理网络接口
Usage: nmcli device { COMMAND | help }
COMMAND := { status | show | set | connect | reapply | modify | disconnect | delete | monitor | wifi | lldp }
status
show [<ifname>]
set [ifname] <ifname> [autoconnect yes|no] [managed yes|no]
connect <ifname>
reapply <ifname>
modify <ifname> ([+|-]<setting>.<property> <value>)+
disconnect <ifname> ...
delete <ifname> ...
monitor <ifname> ...
wifi [list [ifname <ifname>] [bssid <BSSID>]]
wifi connect <(B)SSID> [password <password>] [wep-key-type key|phrase] [ifname <ifname>]
[bssid <BSSID>] [name <name>] [private yes|no] [hidden yes|no]
wifi hotspot [ifname <ifname>] [con-name <name>] [ssid <SSID>] [band a|bg] [channel <channel>] [password <password>]
wifi rescan [ifname <ifname>] [[ssid <SSID to scan>] ...]
lldp [list [ifname <ifname>]]
nmcli device status
输出网络设备状态信息
# nmcli device status
DEVICE TYPE STATE CONNECTION
ens33 ethernet connected ens33
ens37 ethernet connected ens37
virbr0 bridge connected virbr0
lo loopback unmanaged --
virbr0-nic tun unmanaged --
nmcli device show [ifname]
查看接口信息
# 查看所有网络设备信息
# nmcli device show
GENERAL.DEVICE: ens33
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 00:0C:29:1D:C6:13
GENERAL.MTU: 1500
GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: ens33
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/8
WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.240.200/24
IP4.GATEWAY: 192.168.240.2
IP4.ROUTE[1]: dst = 192.168.240.0/24, nh = 0.0.0.0, mt = 100
IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 192.168.240.2, mt = 100
IP4.DNS[1]: 192.168.240.2
............
# 查看指定接口信息
# nmcli device show ens37
GENERAL.DEVICE: ens37
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 00:0C:29:1D:C6:1D
GENERAL.MTU: 1500
GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: ens37
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/10
WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.240.201/24
IP4.GATEWAY: 192.168.240.2
IP4.ROUTE[1]: dst = 192.168.240.0/24, nh = 0.0.0.0, mt = 101
IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 192.168.240.2, mt = 101
IP4.DNS[1]: 192.168.240.2
IP6.ADDRESS[1]: fe80::c82:8bf1:82a4:365/64
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 101
IP6.ROUTE[2]: dst = ff00::/8, nh = ::, mt = 256, table=255
nmcli device set [ifname] ifname [autoconnect {yes | no}] [managed {yes | no}]
设置设备的属性
# 设置自动连接
# nmcli device set ens37 autoconnect yes
nmcli device connect ifname
连接设备,NetworkManager会尝试去找合适的连接激活
# 连接
# nmcli device connect ens37
Device 'ens37' successfully activated with '4a5516a4-dfa4-24af-b1c4-e843e312e2fd'.
nmcli device disconnect ifname
断开连接,与connect相反
# 断开连接
# nmcli device disconnect ens37
Device 'ens37' successfully disconnected.