nmcli的使用

编程知识 更新时间:2023-04-29 07:47:37

关于NMCLI :

“顾名思义”,nmcli,nm表NetworkManager,cli表CLI(命令行界面),nmcli是NetworkManager的命令行工具。使用nmcli时NetworkManager必须开启。

官方描述:nmcli是一个用于控制NetworkManager和报告网络状态的命令行工具,它可以被用来替代nms -applet或其他图形客户端。Nmcli用于创建、显示、编辑、删除、激活和取消激活网络连接,以及控制和显示网络设备状态。参见nmcli-examples(7)了解准备运行nmcli的示例。

NetworkManager:

NetworkManager是RHEL在2004年启动的项目,为了能够让LInux用户更轻松的处理现代网络需求,尤其是无线网络,能够自动发现网卡并配置 IP地址。

Linux中存在很多的网络管理命令,我们通常使用的有:network服务,NetworkManager服务,ipconfig命令,ip命令,和netstat命令等

从RHRL7开始,ipconfig,netstat,network服务已经不再作为系统默认配置。对于Linux来说,现在流行的网络管理工具有:Network与NetworkManager。Network作为基础服务,桌面版和服务器中都有。NetworkManager一般只在桌面版中安装,因为有图形配置界面,大受用户欢迎。但这两个网络服务只有一个生效,正常来说,如果两个服务同时存在,则默认启用NetworkManager。在RHEL/Centos  8上已经废弃network.service(默认不安装),只能通过NetworkManager进行网络配置。

NETworkManager主要管理两个对象:Connection(网络连接配置)和Device(网卡设备),他们之间是多对一的关系,但是用时刻只能有一个Connection对于Device才有效。

NetworkManager的相关命令:

查看运行状态:systemctl  status  NetworkManager

启动:systemctl  start  NetworkManager

重启:systemctl  restart NetworkManager

关闭:systemctl  stop  NetworkManager

查看是否开机启动:systemctl  is-enabled  NetworkManager

开机启动:systemctl  enable  NetworkManager

禁止开机启动:systemctl  disable  NetworkManager

nmcli相比于那些无GUI的管理员来说简直就是非常理想的工具,因为他是个CLI工具,他创于2010,他的存在就是用来替代其他网络配置接口和连接的方法,如:ifconfig。

nmcli是RHEL7或Centos7之后的命令,NetworkMannager有两种方式管理网络信息一种就是通过UI界面的nmtui,一种便是通过CLI的nmcli了。

nmcli一共有8个子命令,每个子命令都有其相关的网络操作,分别是:

1.help 不用说就是个提供有关nmcli命令相关的帮助信息和方法

2.device 主要用于更改与某个设备(接口)相关联的连接参数或使用一个已有的连接来连接设备。

3.general 返回NetworkManager的状态和总体配置信息

4working 提供命令来查询某个网络连接的状态和启动、禁用连接的功能

5.radio 提供命令来查询某个WIFI 网络连接的状态和启动、禁用和连接的功能

6.monitor 提供命令来监控NetworkManager的活动并观察网络连接的状态改变

7.connection 提供命令来启动或禁用网络接口、添加新的连接、删除已有连接等功能

8.secret 注册nmcli来作为一个NetworkManager的秘密代理,用以监听秘密信息。这个子命令用的很少,因为当连接到网络时,nmcli会自动做这些事

关于nmcli子命令:

general 常规选项

general 可简写为 g

格式:nmcli g [status|hostname|permissions|logging]

general描述:general可一显示网络管理器的状态和权限,可以获取主机名和修改主机名,以及网络管理器日志记录级别和域。

status:

nmcli general status #显示网络(网络管理器)的整体状态,general可简写为g

命令返回结果:

第一列:STATE显示网络是否连接

第二列:CONNECTIVITY显示网络连接状态,网络连接状态有五种分别是:

full:连网,并具有完全访问

limited:连网,但是无法上网

portal:连网,但是需要认证才能上网(无法到达完整的互联网)

none:没连网(主机未连接到任何网络)

Unknown:无法找到连接状态(未知的)

第三列:WIFI-HW表wifi硬件开关

第四列:WIFI表wifi软件开关

第五列:WWAN-HW表WWAN硬件开关

第六列:WWAN表WWAN软件开关

HW代表:HardWare(硬件)WWAN表Wireless Wide Area Network(无线广域网)

hostname:

nmcli general hostname #获取主机名称,打印配置的主机名

nmcli general hostname 新名称 #当加了参数可设置此为新的主机名称

permissions:

nmcli general permissions#显示当前用户对网络管理器可允许的操作权限。如:启动和禁用网络、更爱WIFI和WWAN状态、修改连接等

loggin:

nmcli general loggin#获取和更改网络管理器(NetwoekManager)日志记录级别和域。在没有任何参数的情况下,显示当前日志级别和域,

nmcli general logging level 日志级别  domains 域参数#更改日志记录状态

networking 网络控制

networking可简写为n

格式:nmcli networking[on|off|connectivity]

networking描述:查询(网络管理器)NetworkManager的网络状态,开启和关闭网络。

on:nmcli networking on #启用所有接口(NetworkManager的网络控制)

off:nmcli networking off #禁用所有接口(NetworkManager的网络控制)

当网络关闭时,NetworkManager管理的所有接口将被去激活。

connectivity:

nmcli networking connectivity #获取网络连接状态。

nmclie  networking  connectivity  check  # 可选的check参数告诉NetworkManager重新检查连接性,否则显示最近已知的连接性状态而不重新检查。

CONNECTIVITY显示网络连接状态,网络连接状态有五种分别是:

full:连网,并具有完全访问

limited:连网,但是无法上网

portal:连网,但是需要认证才能上网(无法到达完整的互联网)

none:没连网(主机未连接到任何网络)

Unknown:无法找到连接状态(未知的)

radio 无线电传输控制

格式:nmcli radio [all|wifi|wwan]

描述:显示无线开关状态,或启用和禁用无线开关。

wifi:nmcli radio  wifi#在NetworkManager中显示或设置Wi-Fi状态。如果没有提供参数,Wi-Fi状态会打印出来(enabled:启用、disabled:禁用)

on:nmcli  radio  on #开启Wi-Fi

off:nmcli  radio  off #关闭Wi-Fi

wwan:在NetworkManager中显示或设置WWAN的状态。如果没有提供参数,则打印WWAN状态(WWAN(无线广域网)技术是是得笔记本电脑或者其他的设备装置在蜂窝网络覆盖范围内可以在任何地方连接到互联网)

on:nmcli  radio  wwan on # 开启WWAN服务(当然nmcli radio all on 也能开启wwan)

off:nmcli  radio  wwan off # 禁用WWAN服务

all: 同时显示或设置所有前面提到的无线电开关。

on:nmcli  radio  all  on # 开启

off:nmcli  radio  all  off # 关闭

monitor 活动监视器

格式:nmcli monitor

描述:观察网络管理器活动、监视连接的变化状态、设备或连接配置文件的变化,请参见nmcli连接监视器和nmcli设备监视器,以监视某些设备或连接的变化。

connection 连接管理

格式:nmcli connection

connection可简写为c

[show|up|down|modify|add|edit|clone|delete|monitor|reload|load|import|export]

描述:NetworkManager将所有网络配置存储为“连接”,当设备使用连接的配置来创建或连接到网络时,连接是“活动的”。可能有多个连接应用于一个设备,但在任何给定的时间,只有一个连接可以在该设备上激活。额外的连接可以用于在不同的网络和配置之间快速切换。考虑一台机器,它通常连接到启用DHCP的网络,但有时连接到使用静态IP地址的测试网络。无需在每次网络改变时手动重新配置etho,设置可以保存为两个连接,一个用于DHCP(称为默认),另一个具有静态寻址细节(称为测试)。当连接到启用DHCP的网络时,用户将默认运行nmcli con up,当连接到静态网络时,用户将运行nmcli con up测试。

show有两种方法一种是:

1.列出活动的连接,可对其排序(+ 升序,- 降序)

列出内存和磁盘上的连接配置文件,如果设备正在使用连接配置文件,那么一些连接配置文件可能是活动的。没有任何参数时,则列出所有配置文件,当指定--active选项,只显示活动的配置文件。可以用 --order选项来获得连接的自定义排序如:活动状态(active)、连接类型(type)、连接名称(name)、D-bus路径(path)

(order +或无前缀表按升序排序)

nmcli c show  #显示所有连接状态

nmcli c show  --active #列出所有活动的连接

nmcli    c   show  --order  +active # 显示所有连接状态以活动的连接进行排序

nmcli c   show  --order  +name #显示所有连接状态,以名称排序

nmcli c show   --order  -type #显示所有连接状态,以连接类型排序(降序)

  1. 查看指定连接的详细信息

格式:nmcli  c  show  [id|uuid|path|apath|profile|active]

id:nmcli c s id 连接名 #显示连接名为(如:ens33)的连接

uuid:nmcli c s uuid 连接的uuid #显示连接uuid为(…)的连接

path:nmcli c s path  D-bus静态连接路径 #显示D-bus为(…)的连接

连接格式:/org/freedesktop/NetworkManager/Settings/num

如:GENERAL.CON-PATH: /org/freedesktop/NetworkManager/Settings/1

apath:nmcli c s apath D-bus活动连接路径  #显示D-bus为(…)的连接

连接格式:/org/freedesktop/NetworkManager/ActiveConnection/num

如:GENERAL.DBUS-PATH:/org/freedesktop/NetworkManager/ActiveConnection/4

profile:nmcli c s profile #只显示静态配置文件配置

active:nmcli c s active #只显示活动的连接数据(当概要文件处于活动状态时)

up:激活一个连接,提供连接名称、uuid、或D-bus路径标识进行激活,如果ID没有给出,则需要一个ifname, NetworkManager将为给定的ifname激活最佳可用连接。如果是VPN连接,ifname选项指定基本连接的设备名ap命令指定在什么情况下应该使用什么特定的ap所要连接的AP的BSSID (对于wi- Fi连接)。

格式:nmcli connection up [id|uuid|path|ifname|ap]

id:nmcli c u id 连接名 #以连接名激活连接

uuid:nmcli c u uuid 连接的uuid #以连接的uuid进行激活连接

path:nmcli  c  u  path  D-bus路径标识 #以D-bus路径标识进行激活连接

如: /org/freedesktop/NetworkManager/Settings/1

ifname:nmcli  c  u  ifname  设备接口名 #以设备接口名进行激活

ap:该命令需要连接的AP的BSSID(对于wi-Fi连接)。

down:停用连接,提供连接名称、uuid、或D-bus路径标识进行停用其连接 当“ID”不明确时,可以使用关键字ID、uuid、path。

格式:nmcli c   u  [id|uuid|ifname|path]

id:nmcli c u id 连接名 #以连接名停用连接

uuid:nmcli c u uuid 连接的uuid #以连接的uuid进行停用连接

path:nmcli  c  u  path  D-bus路径标识 #以D-bus路径标识进行停用连接

如: /org/freedesktop/NetworkManager/Settings/1

ifname:nmcli  c  u  ifname  设备接口名 #以设备接口名进行停用连接

modify:在连接配置文件中添加、修改、或删除属性,要给一个配置文件设置属性。只需,在指定属性名后跟值,空值会删除属性值.若要设置属性,只需指定属性名称后跟值,空值将删除属性值,同一属性添加多个值使用+ 。同一属性删除指定值用-。

格式:nmcli  c  u  modify  [id|uuid|path]  [+ | - ]  属性 属性值

如:给新连接分配一个固定ip:(需要两个命令1.设定ip  2.将获取ip方法改为手动(manual))

nmcli c  m  ens33  ipv4.address  ip  #修改ip地址

nmcli c  m  ens33  ipv4.method  manual  #修改为静态配置(默认是auto)

  注意:必须先修改ipv4.address,然后才能修改ipv4.method

nmcli c  m  ens33  ipv4.gatway  网关  #修改默认网关

nmcli c  m  ens33  ipv4.dns  DNS  #修改DNS

nmcli c  m  ens33  +ipv4.dns  DNS  #添加一个DNS

nmcli c  m  ens33  ipv6.method disabled  #将ipv6禁用

#查看配置:

[root@linuxzjl zjl]# nmcli  -f  ip4 connection show  ens33  # -f:过滤字段,all为过滤所有字段

IP4.ADDRESS[1]:                         192.168.247.128/24

IP4.GATEWAY:                            192.168.247.2

添加多个ip:

nmcli c  m  ens33  +ipv4.addresses  ip(192.168.14.120)   #添加一个ip

nmcli c  m  ens33  +ipv4.addresses  ip(192.168.14.121)   #添加第二个ip

启用配置:

nmcli  connection  up  ens33

#再次查看,发现添加的在里面

[root@linuxzjl zjl]# nmcli -c no -f ip4 c s ens33

IP4.ADDRESS[1]:                         192.168.247.126/32

IP4.ADDRESS[2]:                         192.168.247.128/24

IP4.GATEWAY:                            192.168.247.2

#删除指定ip

nmcli connection modify ens33 -ipv4.addresses 192.168.247.5

#启动配置

nmcli connection up ens33

#再次查看,发现没了

nmcli -f ip4 connection show ens33

add:使用属性创建一个新的连接,并可同时为该连接指定参数,需要指定新创建连接的属性

格式:

nmcli  connection  add  con-name  连接名称  type  连接类型(如:ethernet)  autoconnect  yes|no(是否开机自动连接yes或no)  ifname   网卡名称(连接的设备或接口名)

描述:命令完成后,会在  /etc/sysconfig/network-scripts/ 下生成一个并未生效的配置文件

ls  /etc/sysconfig/network-scripts  #可看到名字为 ifcfg-连接名称 的一个配置文件

如:

1.创建连接(配置文件)固定ip

nmcli  connection  add  con-name lianjie1  type  ethernet  ifname  ens33  autoconnection  no  ip4  192.168.247.128  #创建一个连接名为lianjie1类型为以太网卡,绑定网卡为ens33,开机不自动连接,设置固定ipv4地址为192.18.247.128 网关 dns 默认的的配置文件

2.启用接口(连接)

nmcli  connection  up  连接名(lianjie1) #启用此连接,此时ip改变,如果不被占用即可连网,此时只有这一个连接连接到网络接口(一个网络接口可有多个连接,但同时只能有一个连接生效)

3.平时如果工作需要,可以多设置几套配置文件,环境需要时可以进行临时的切换。

当不需要再用时可以使用:nmcli connection delete 连接名(lianjie1) #删除

delete:删除已配置的连接。要删除的连接由其名称、UUID或D- Bus路径标识。如果“ID”不明确,可以使用关键字:连接名称、uuid或path

格式:nmcli connection delete [id |uuid |path]

edit:使用交互式控件编辑现有连接或添加新连接,现有连接由其名称、UUID或D-Bus标识  

路径。 如果ID不明确,则可以使用关键字ID、uuid或path。  

格式:nmcli  connection  edit  {[id | uuid | path] (新连接): [type  类型]  [con-name 连接名]}

添加连接:nmcli  connection  edit  type  ethernet  con-name  lianjie2#添加一个名lianjie2 的新连接

编辑连接:nmcli  connection  edit  [id|uuid|path] #编辑现有的连接

进入edit后可用help查看帮助使用edit:

如:save:保存配置

      quit:退出edit

       set:设置(属性  值)

……

clone:克隆一个存在的连接,新连接除了uuid不同、连接名称不同,其他都是一样的,要克隆的连接由它的名称、UUID或D-Bus路径。如果ID不明确,则关键字ID, 可使用uuid或path。

格式:nmcli  connection  clone  [id|uuid|path]   新连接的名称

如:nmcli connection lianjie1 lianjie2 #克隆lianjie1 新连接名为:lianjie2

monitor:监视连接配置文件的活动,每当指定的连接更改时,此命令都会打印一行。要监视的连接由其名称、uuid或D-bus总线路径标识,如果 ID 不明确, 则可以使用关键字 id、uuid 或路径。

格式:nmcli connection monitor [id|uuid|path]

如:当监视的一个连接lianjie1改变时会返回:

lianjie1:连接配置集已改动

reload:重新加载从磁盘重新加载所有连接文件

格式: nmcli connection reload

load:从磁盘加载/重新加载一个或多个连接文件

格式: nmcli  connection  load  /etc/sysconfig/network-scripts/连接文件名#加载连接文件

#我们先创建一个连接文件:

1.echo -e “TYPE=ethernet\nNAME=连接名” > /etc/sysconfig/network-scripts/连接文件

# echo参数-e:将一些特殊字符加以处理,不会将它当成文字输出  \n :换行 \t:Tab

  1. nmcli connection load /etc/sysconfig/network-scripts/连接文件名#加载连接文件

#reload #直接加载全部

device 设备管理

描述:设备管理命令用于显示与管理设备接口

格式:nmcli device [status|]

status:查看接口(设备)简略信息、状态

nmcli device status或nmcli d是一样的,因为status是device的默认选项

结果:

DEVICE      TYPE      STATE   CONNECTION

ens33       ethernet  已连接  ens33         

lo          loopback  未托管  --    

其中:第一列DEVICE表网卡名称

第二列TYPE表网卡类型

第三列STATE表网卡与配置文件的连接状态

connected(已连接)表NetworkManager接管

disconnected表NetworkManager管理

unmanaged(非托管)表不用NetworkManager管理

第四列CONNECTION表配置文件名称(可改)

可用:”nmcli connection modify uuid 网卡id con-name 新名字”修改配置文件名

show:默认查看所有接口(设备)详细信息、状态

nmcli device show #show可简写sh

show 接口名称 #则显示指定接口的详细信息

结果:GENERAL.DEVICE: 网络接口名称

GENERAL.TYPE:网络连接类型

GENERAL.CONNECTION:当前设备使用的连接名称

……

set:设置设备属性

格式:nmcli device set [ifname] ifname [autoconnect {yes | no}] [managed {yes | no}]

如:nmcli device set ifname ens33 autoconnect yes

connect:连接设备,提供一个设备接口,网络管理器将尝试找到一个合适的连接,将激活连接。

如:nmcli device connect ens33

成功用 "ens33a6934c3d-8c7f-4b1b-94c2-3c1021df1ccd" 激活了设备 ""。

disconnect:断开当前连接的设备,防止自动连接。但注意,断开意味着设备停止!但可用 connect 进行连接

如:nmcli device disconnect ens33

成功断开设备 "ens33"。

monitor:监视设备活动。每当指定的设备更改状态时, 此命令都会打印一行。监视所有设备以防未指定接口。当所有指定的设备消失时, 监视器将终止。如果要监视设备添加, 请考虑使用带有 nmcli 监视器命令的全局监视器。

  

reapply:使用上次应用后对当前活动连接所做的更改来更新设备。

如:nmcli device reapply ens33 或nmcli d r ens33

更新设备相当于重启连接

modify:修改设备上处于活动的设备,但该修改只是临时的,并不会写入文件(语法类似nmcli connection modify)

格式:nmcli device modify ifname  [+|-  属性  属性值

如:nmcli device modify ens33 +ipv4.addresses 192.168.247.128

delete:删除设备,该命令用于将接口从系统中移除,删除设备,该命令从系统中删除接口。请注意, 这仅适用于诸如bonds, bridges, teams等软件设备。命令无法删除硬件设备 (如以太网)。

help 提供有关nmcli帮助信息和方法

nmcli help

secret 注册 nmcli 来作为一个 NetworkManager 的秘密代理,用以监听秘密信 息。这个子命令很少会被用到,因为当连接到网络时,nmcli 会自动做这些事

格式:nmcli agent {secret | polkit | all}

secret:将nmcli注册为NetworkManager秘密代理并监听  

polkit:将nmcli注册为用户会话的polkit代理并进行侦听

all:同时作为NetworkManager秘密和polkit代理运行nmcli。

更多推荐

nmcli的使用

本文发布于:2023-04-21 20:20:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/324e37029322f59304d63708ae172ec9.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:nmcli

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 94077文章数
  • 23803阅读数
  • 0评论数