行业资讯

帮助中心 >  产品文档 >  云计算 >  nmcli,一个神奇的 Linux 命令!

Linux中的nmcli是一个强大的命令行工具,用于管理网络连接。它是NetworkManager的一部分,允许通过终端轻松配置和管理以太网、Wi-Fi、VPN等网络连接。本文将深入探讨nmcli的不同功能以及如何使用它来管理网络连接。

一、安装与基本用法

安装 nmcli

通常情况下,nmcli会随着NetworkManager一起安装在Linux系统上。要确保它已经安装,可以在终端中运行以下命令:

nmcli --version

如果命令返回版本信息,那么nmcli已经安装。

启动和停止 NetworkManager 服务

要使用nmcli,首先需要启动NetworkManager服务。可以使用以下命令启动它:

sudo systemctl start NetworkManager

要停止服务,可以运行:

sudo systemctl stop NetworkManager

查看网络连接列表

使用以下命令,可以列出所有网络连接及其状态:

nmcli connection show

这将显示当前系统中的所有网络连接,包括以太网、Wi-Fi和VPN等。

二、wifi管理网络链接

创建新的网络连接

要创建新的网络连接,可以使用以下命令:

nmcli connection add type ethernet ifname eth0

上述命令创建了一个新的以太网连接,名称为eth0。根据不同的连接类型,命令的参数会有所不同。可以使用nmcliman页面查看详细信息。

修改现有连接

如果需要修改现有连接的属性,可以使用以下命令:

nmcli connection modify "Wired connection 1" ipv4.address 192.168.1.2/24

上述命令将名为"Wired connection 1"的连接的IPv4地址修改为192.168.1.2/24

删除网络连接

要删除网络连接,可以运行以下命令:

nmcli connection delete "Wired connection 1"

这将删除名为"Wired connection 1"的连接。

三、Wi=Fi网络管理

连接到 Wi-Fi 网络

要连接到Wi-Fi网络,可以使用以下命令:

nmcli device wifi connect SSID password PASSWORD

其中,SSID是要连接的Wi-Fi网络的名称,PASSWORD是连接的密码。

列出可用的 Wi-Fi 网络

使用以下命令,可以列出附近可用的Wi-Fi网络:

nmcli device wifi list

这将显示附近的Wi-Fi网络列表,包括它们的名称、信号强度等信息。

配置 Wi-Fi 连接

要配置Wi-Fi连接的详细信息,可以使用以下命令:

nmcli connection add type wifi ifname wlan0 con-name "My WiFi" ssid "MySSID"

上述命令创建了一个名为"My WiFi"的Wi-Fi连接,连接到SSID为"MySSID"的网络。可以根据需要添加密码等其他配置。

四、VPN设置

配置 OpenVPN 连接

要配置OpenVPN连接,需要提供OpenVPN配置文件的路径,例如:

nmcli connection import type openvpn file myvpn.ovpn

这将导入并配置一个OpenVPN连接。

配置 PPTP 连接

要配置PPTP连接,可以使用以下命令:

nmcli connection add type pptp con-name "My PPTP VPN" ifname ppp0 user USERNAME password PASSWORD

上述命令创建了一个名为"My PPTP VPN"的PPTP连接,需要提供用户名和密码。

配置 L2TP 连接

要配置L2TP连接,可以使用以下命令:

nmcli connection add type l2tp con-name "My L2TP VPN" ifname ppp0 user USERNAME password PASSWORD

与PPTP类似,这个命令创建了一个名为"My L2TP VPN"的L2TP连接,需要提供用户名和密码。

五、示例代码

以下是一些示例代码,演示了如何使用nmcli命令进行不同操作:

创建新的以太网连接

nmcli connection add type ethernet ifname eth0

修改现有连接的IPv4地址

nmcli connection modify "Wired connection 1" ipv4.address 192.168.1.2/24

连接到 Wi-Fi 网络

nmcli device wifi connect MySSID password MyPassword

导入 OpenVPN 配置

nmcli connection import type openvpn file myvpn.ovpn

配置 PPTP 连接

nmcli connection add type pptp con-name "My PPTP VPN" ifname ppp0 user USERNAME password PASSWORD

配置 L2TP 连接

nmcli connection add type l2tp con-name "My L2TP VPN" ifname ppp0 user USERNAME password PASSWORD

六、高级用法

当涉及到nmcli的高级用法时,有一些更复杂和强大的功能可供利用。以下是一些高级用法的详细内容和示例代码

1. 批量配置网络连接

有时候,可能需要配置多个网络连接,而不是一个一个手动输入命令。nmcli可以批量配置网络连接,通过创建一个包含配置信息的文本文件,然后使用nmcli导入这些配置。

详细步骤:

1.创建一个包含网络连接配置的文本文件,例如my_connections.txt

2.在文本文件中为每个连接定义配置,例如:

connection add type ethernet ifname eth0 con-name "My Ethernet" ip4 192.168.1.2/24
connection add type wifi ifname wlan0 con-name "My WiFi" ssid "MySSID" password "MyPassword"

3.使用以下命令导入配置文件:

nmcli -f json connection import type keyfile file my_connections.txt

这将批量创建多个网络连接。

2. 脚本编写与自动化

nmcli可以与Shell脚本结合使用,以实现自动化任务。可以编写脚本来根据不同条件配置网络连接,或者在特定事件发生时执行网络管理操作。

示例脚本:

以下是一个简单的Shell脚本示例,它使用nmcli来检查Wi-Fi状态并连接到一个指定的Wi-Fi网络:

#!/bin/bash

# 定义Wi-Fi名称和密码
wifi_ssid="MySSID"
wifi_password="MyPassword"

# 检查Wi-Fi连接状态
nmcli connection show --active | grep -q "$wifi_ssid"

if [ $? -eq 0 ]; then
  echo "已连接到Wi-Fi网络: $wifi_ssid"
else
  # 如果未连接,尝试连接到Wi-Fi
  nmcli device wifi connect "$wifi_ssid" password "$wifi_password"
  if [ $? -eq 0 ]; then
    echo "成功连接到Wi-Fi网络: $wifi_ssid"
  else
    echo "连接失败,请检查Wi-Fi配置和密码"
  fi
fi

该脚本首先检查是否已经连接到指定的Wi-Fi网络,如果未连接,则尝试连接。

3. 使用命令别名

如果经常使用nmcli执行特定的任务,可以创建命令别名来简化命令的输入。这可以减少需要键入的字符数,并提高效率。

示例:

~/.bashrc文件中添加别名:

alias mywifi='nmcli device wifi connect MySSID password MyPassword'

然后运行以下命令以应用更改:

source ~/.bashrc

现在,只需输入mywifi即可连接到Wi-Fi网络,而无需输入完整的nmcli命令。

4. 使用脚本监控网络状态

可以编写脚本来监控网络连接状态,以便在连接断开时采取措施,或者在连接恢复时自动重新连接。

示例脚本:

以下是一个简单的脚本示例,用于检测网络连接状态并在连接断开时尝试重新连接:

#!/bin/bash

# 定义Wi-Fi名称
wifi_ssid="MySSID"

while truedo
  # 检查Wi-Fi连接状态
  nmcli connection show --active | grep -q "$wifi_ssid"
  if [ $? -ne 0 ]; then
    # 如果未连接,尝试重新连接
    echo "Wi-Fi连接断开,尝试重新连接..."
    nmcli device wifi connect "$wifi_ssid" password "$wifi_password"
  fi
  sleep 60  # 每60秒检查一次连接状态
done

该脚本会在后台运行,每60秒检查一次Wi-Fi连接状态,如果连接断开,则尝试重新连接。

总结

nmcli是一个强大的Linux命令行工具,用于管理各种类型的网络连接。通过本文提供的详细信息和示例代码,可以更好地利用nmcli来配置和管理网络连接。无论是以太网、Wi-Fi还是VPN,nmcli都能满足需求,使网络管理变得更加轻松。

蓝队云官网上拥有完善的技术支持库可供参考,大家可自行查阅,更多技术问题,可以直接咨询。同时,蓝队云整理了运维必备的工具包免费分享给大家使用,需要的朋友可以直接咨询。


更多技术知识,蓝队云期待与你一起探索。




提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: