nmcli

文章目录

  • 简介
  • 使用
    • 语法格式
    • `nmcli general`
      • `nmcli general status`
      • `nmcli general hostname [hostname]`
      • `nmcli general permissions `
      • `nmcli general logging [level level] [domains domains...] `
    • `nmcli networking`
      • `nmcli networking on`
      • `nmcli networking off`
      • `nmcli networking connectivity`
    • `nmcli connection`
      • `nmcli connection show`
      • `nmcli connection up [[id | uuid | path] ] [ifname ] [ap ] [passwd-file ] `
      • `nmcli connection down [[id | uuid | path] ] [ifname ] [ap ] [passwd-file ] `
      • `nmcli connection modify [--temporary] [id | uuid | path] ([+|-]. )+`
      • `nmcli connection add COMMON_OPTIONS TYPE_SPECIFIC_OPTIONS SLAVE_OPTIONS IP_OPTIONS [-- ([+|-]. )+]`
      • `connection delete [id | uuid | path] `
      • `nmcli connection load [ ... ]`
      • `nmcli connection clone [--temporary] [id | uuid | path ] `
      • `nmcli connection monitor [id | uuid | path] ID...`
    • `nmcli device`
      • `nmcli device status`
      • `nmcli device show [ifname]`
      • `nmcli device set [ifname] ifname [autoconnect {yes | no}] [managed {yes | no}]`
      • `nmcli device connect ifname`
      • `nmcli device disconnect ifname`

简介

用于管理网络和显示网络状态的工具(需要开启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

检查网络连接状态

  • none 主机没有连接到任何网络
  • portal 无法到达完整的网络
  • limited 主机连接到网络,但是无法上网
  • full 主机连接到网络,并且能上网
  • unknow 未知状态
# 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.

你可能感兴趣的:(杂项,nmcli,网络管理,NetworkManager)