nmcli命令详解(创建热点,连接wifi,管理连接等)

简述

语法

nmcli [OPTIONS...] { help | general | networking | radio | connection | device | agent | monitor } [COMMAND] [ARGUMENTS...]
上面的语法就是: nmcli [选项...] 对象 [命令] [参数...]
对象 =  help | general | networking | radio | connection | device | agent | monitor

提示: 1-输入命令的时候请善用tab补全,少打很多单词!
    2-支持简写,例如connection可以简写成con或c, modify可以简写成mod或m

比较有用的选项(OPTION)

-a | --ask  提示输入缺少的参数,而不是报错。例如连接wifi的时候,没有提供password参数,那么如果有-a选项就会提示输入密码
-p | --pretty 显示的时候会更加易于人类阅读,尤其是多行显示的时候,可以分块显示
-m | --mode { tabular | multiline }  tabular显示的时候是表格式(有表头)的,不易阅,multiline是多行类似key:value形式。如果省略,大多数命令默认使用tabular。 nmcli connection show ID和nmcli device show这两命令因为结构化信息不好单行显示,如果省略,默认使用multiline
-f | --fields { field1,field2... | all | common }  默认使用common(命令公共字段)。也可以指定特定字段,比如nmcli -f GENERAL.DEVICE,IP4.ADDRESS device show 显示网卡名和ip地址(善用tab补全)。查看可用字段的方法:1-通过对应对象的show来找到字段.对于connection对象,可以使用man 5 nm-settings查看, 或者输入错误字段,让报错来提示可字段,比如输入nmcli -f xxx connection show myAP 就会报错,提示可用字段

对象

general对象(常规信息)

用途

  • 常规信息,个人感觉本对象用途不大,稍微有用一点的就是status了,例如:显示NetworkManager的状和操作权限,获取和修改系统主机名,NetworkManager的日志级别和域

语法

nmcli general { status | hostname | permissions | logging } [ARGUMENTS...]

networking对象(整个网络)

用途

  • 查询NetworkManager状态,启用禁用网络

语法

nmcli networking { on | off | connectivity } [ARGUMENTS...]

命令示例

nmcli networking off #禁用所有被NetworkManager托管的网络接口的网络连接(修改配置文件可以启用或禁止NetworkManager托管,可以自行百度)
nmcli networking connectivity check # 参数check表示重新检查连接状态。连接状态full表示具有完全的internet访问能力,limited表示连接到一个网络,但是internet未接入

radio对象(无线开关)

用途

  • 显示无线电开关状态,启用、禁用无线电

语法

nmcli radio { all | wifi | wwan } [ARGUMENTS...]

命令示例

nmcli radio wifi      # 打印wifi开关状态
nmcli radio wifi off  # 表示关闭wifi

connection对象(连接的配置)

用途

  • NetworkManager会把网络配置保存为connections配置信息,比如保存二层网络信息,ip信息等。NetworkManger会根据这些信息知道怎么去连接一个网络。在一个特定设备,可以有多个连接配置(比如一个是dhcp的,一个是静态ip地址的),但是只有一个配置是“活动“的配置。connection对象就是用来管理这些连接配置的。

语法

nmcli connection { show | up | down | modify | add | edit | clone | delete | monitor | reload | load | import | export } [ARGUMENTS...]
  • 激活连接的语法详述
    语法: nmcli connection up [ id | uuid | path ] ID [ifname ifname] [ap BSSID] [passwd-file file]
    解释:一个连接由其name(名称),uuid或path(就是D-Bus路径)所标识。如果ID不明确,则可以使用关键字id,uuid或path来指明这个ID是什么。当需要特定设备激活连接时,应提供带有接口名称的ifname选项。如果未提供ID,则需要一个ifname,NetworkManager将为给定的ifname激活最佳的可用连接。如果是VPN连接,则ifname选项指定基本连接的设备。ap选项指定在Wi-Fi连接的情况下应使用哪个特定的AP。passwd-file:某些网络在激活期间可能需要凭据。您可以使用此选项提供这些凭据。文件的每一行应包含一个密码。文件内容格式为setting_name.property_name:the password。例如WPA-PSK连接的格式为802-11-wireless-security.psk:secret12345。nmcli还接受wifi-sec和wifi字符串,而不是802-11-wireless-security。当NetworkManager需要密码但未提供密码时,nmcli在使用--ask运行时会要求输入密码。如果未传递--ask,则NetworkManager可以询问可能正在运行的另一个秘密代理(通常是GUI秘密代理,例如nm-applet或gnome-shell)。

  • 停用连接的语法详述
    语法: nmcli connection down [ id | uuid | path | apath ] ID... #注意这里的ID可指定多个
    解释: 请注意,该命令将停用指定的活动连接,但是该连接处于活动状态的设备仍可以连接,并且将通过查找设置了“自动连接”标志的合适连接来执行自动激活。 请注意,停用的连接配置文件在内部被阻止再次自动连接。 因此,它不会自动连接,直到重新启动或直到用户执行取消自动连接的操作为止,例如修改配置文件或显式激活它。在大多数情况下,您可能想使用device disconnect命令。
    该连接由其名称,UUID或D-Bus路径标识。 如果ID不明确,则可以使用关键字id,uuid,path或apath。

  • 修改连接的语法详述
    语法 : modify [--temporary] [ id | uuid | path ] ID { option value | [+|-]setting.property value } ...
    解释: 在连接配置文件中添加,修改或删除属性。要设置属性,只需指定属性名称后跟值即可。空值(“”)将属性值重置为默认值。除了属性外,您还可以对某些属性使用简称。有关详细信息,请参阅“属性别名”部分。如果要将项目或标志附加到现有值,请使用+前缀作为属性名称或别名。如果要从容器类型或标志属性中删除项目,请使用-前缀。对于某些属性,您还可以通过指定从零开始的索引来删除元素。 +和-修饰符仅对支持它们的属性有效。例如,这些是多值(容器)属性或标志,例如ipv4.dns,ip4,ipv4.addresses,bond.options,802-1x.phase1-auth-flag等。有关设置和属性名称,其描述和默认值的完整参考,请参见nm-settings(5)。如果设置和属性是唯一的,则可以缩写。该连接由其名称,UUID或D-Bus路径标识。如果ID不明确,则可以使用关键字id,uuid或path。

  • add edit clone export import reload等命令这里省略, 参考文章头部给的url

命令示例:

nmcli connection show  # 列出网络连接的配置(存放于内存和硬盘的配置,nmcli -f active connection show 表示显示存储于内存配置, -f profile表示存放于硬盘的配置)
nmcli connection show --active  # 仅列出处于活动状态的网络配置
nmcli --show-secrets -f  802-11-wireless-security.psk  connection show  myAP001  # 显示myAP001密码,加了--show-secrets或-s才能显示密码明文
nmcli connection show --order name # 按配置名排序,可选排序有type、active、name、path(d-bus路径),+号和-号表示升序和降序,未指定,则默认使用升序。默认排序是:--order active:name:path
nmcli connection show uuid 38781e62-4bab-4ba8-a086-bfaece222794  # 按指定关键字显示,关键字有id,uuid、path、apath。 用途是不能使用常规的nmcli connection show <配置名> 来显示的时候,这种显示方法就可以派上用场了。


nmcli connection up prof1        # 激活一个连接。
nmcli connection down prof1   # 停用一个连接

nmcli connection delete prof1 #删除一个配置, delete [ id | uuid | path ] ID...

nmcli connection add type ethernet ifname enp5s0    # 创建一个连接。这里没有指定method,则默认使用auto,也就是自动配置。类型是以太网,类型有以太网、wifi,adsl等,具体参考文章头部给的url
nmcli connection add ifname enp5s0 autoconnect yes type ethernet ip4 10.1.1.1/8 gw4 10.1.0.1    # 创建一个静态ip的以太网连接

nmcli connection modify  myEth +ipv4.dns 8.8.8.8    # 给myEth的配置添加dns
nmcli connection modify  myEth ipv4.method manual  ipv4.addresses "192.168.43.64/24,10.0.0.23/8"   #修改myEth连接为手动,ip地址设置为两个
nmcli con mod myEth  autoconnect no     # 设置myEth连接配置为不自动连接(重启操作系统或从起NetworkManager就能看到不会自动连接了)
nmcli -f name,autoconnect-priority connection  # 查看网络优先级,数字大的优先级高
nmcli con modify mySSID connection.autoconnect-priority 9 # 调整wifi名为mySSID的无线网络的自动连接优先级为9

device对象(网络接口)

用途

  • 显示或管理网络接口

语法

nmcli device { status | show | set | connect | reapply | modify | disconnect | delete | monitor | wifi | lldp } [ARGUMENTS...]

子命令详细解释(这里不全部翻译,理解了上面connection,这里也是差不多的):
set [ifname] ifname [ autoconnect { yes | no } ] [ managed { yes | no } ]
Set device properties. connect ifname Connect the device. NetworkManager will try to find a suitable connection that will be activated. It will also consider connections that are not set to auto connect.If no compatible connection exists, a new profile with default settings will be created and activated. This differentiates nmcli connection up ifname "$DEVICE" from nmcli device connect "$DEVICE" If --wait option is not specified, the default timeout will be 90 seconds.

reapply ifname
Attempt to update device with changes to the currently active connection made since it was last applied.

modify ifname { option value | [+|-]setting.property value } ...
Modify the settings currently active on the device.
This command lets you do temporary changes to a configuration active on a particular device. The changes are not preserved in the connection profile.See nm-settings(5) for the list of available properties. Please note that some properties can't be changed on an already connected device.You can also use the aliases described in Property Aliases section. The syntax is the same as of the nmcli connection modify command.

disconnect ifname...
Disconnect a device and prevent the device from automatically activating further connections without user/manual intervention. Note that disconnecting software devices may mean that the devices will disappear.(这段翻译一下:断开设备连接,并防止设备自动激活。 断开软设备的连接可能会让这些设备消失)
If --wait option is not specified, the default timeout will be 10 seconds.

delete ifname...
Delete a device. The command removes the interface from the system. Note that this only works for software devices like bonds, bridges, teams, etc(仅能删除软设备,例如bond、桥等). Hardware devices (like Ethernet) cannot be deleted by the command.(硬设备无法删除)

wifi [ list [--rescan | auto | no | yes ] [ifname ifname] [bssid BSSID] ]
列出wifi热点,可以指定无线网卡接口名和热点BSSID。列出的热点列表不会超过30秒,必要时会重新扫描(通过--rescan控制重新扫描:取值auto yes no)

wifi connect (B)SSID [password password] [ifname ifname] [bssid BSSID] [name name] [ private { yes | no } ] [ hidden { yes | no } ]
连接到由SSID或BSSID指定的wifi网络。该命令找到匹配的连接或创建一个连接,然后在设备上激活它。如果已经存在配置文件,可以直接使用nmcli connection up <配置文件名>。private表示该连接是否对其他用户可见。hidden用于连接隐藏ssid的wifi。

wifi hotspot [ifname IFNAME] [con-name NAME] [ssid SSID] [ band { a | bg } ] [channel channel] [password password]
创建一个热点,con-name是配置名。

wifi rescan [ifname IFNAME] [ssid SSID...]
重新扫描wifi接入点,可以指定多个SSID。对于隐藏ssid的网络,务必要指定ssid。命令不显示接入点列表。显示接入点列表请使用nmcli device wifi list命令

命令示例:

nmcli dev wifi list    # 列出可用的wifi接入点, list可以省略
nmcli  device wifi connect mySSID password '12345678'   # 连接热点mySSID, 连接成功后,就会自动生成配置文件,以后要再连接,可以使用nmcli connectio up mySSID命令了
nmcli device wifi hotspot con-name ap001 ifname wlp3s0 ssid myAP001 password 12345678 # 创建热点。以后如果要使用,可以直接nmcli connection up ap001
附:nmcli建热点成功,但是手机连接不上,可以这样解决(假设热点名是Raspi):
root@pi:# nmcli connection add type wifi ifname wlan0 con-name raspAP autoconnect yes ssid Raspi
root@pi:# nmcli connection modify raspAP 802-11-wireless.mode ap 802-11-wireless.band bg ipv4.method shared wifi-sec.key-mgmt wpa-psk wifi-sec.psk '1234568'
root@pi:~# nmcli connection up raspAP # 重点:如果up不起来,可以停掉dhcpcd服务

常用属性缩写

  • con-name = connection.id
  • autoconnect = connection.autoconnect
  • ifname = connection.interface-name
  • mtu = 不同类型下的.mtu属性
  • ssid = wireless.ssid
  • mode = wireless.mode(网卡为wifi时)
  • ip4 = 作用于ipv4.addresses(并且设置ipv4.method为manual) ,同理可知ip6
  • gw4 = ipv4.gateway(同理可知gw6)

属性取值参考

参考 https://developer.gnome.org/NetworkManager/unstable/nm-settings.html
比如查看ipv4.method可以有auto disable manual等值(打开上面网页搜索”ipv4 setting“)

更多例子参考

参阅 https://developer.gnome.org/NetworkManager/unstable/nmcli-examples.html

posted on 2019-12-22 13:51  进取有乐  阅读(17928)  评论(0编辑  收藏  举报

导航