解锁vSphere小技能:最常用的 ESXCLI 命令汇总
在日常运维中,我们通常会使用 vSphere Client(VMware 提供的图形化管理界面) 或基于 Web 的 vSphere Web/HTML5 Client 来管理 ESXi 主机和整个 VMware 环境。
虽然大部分配置和操作都可以通过 GUI 进行,但总会有一些关键参数无法在图形界面中显示或修改。这时,你就需要更底层、更强大的方式来操控——也就是命令行接口(CLI)或我们常说的“控制台(Console)”。
CLI 不仅可以访问隐藏设置,还支持对系统进行全面且精细的管理操作。除了通用的类 Linux 命令外,ESXi 还提供了专属的命令集合——ESXCLI。
为了帮助你更高效地管理 VMware 环境,本文将以命令目录的方式,系统整理出最常用的 ESXCLI 命令,这些命令都属于 ESXi Shell 命令体系的一部分,值得收藏学习。一、如何打开 ESXi Shell 控制台?
默认情况下,ESXi Shell 是被禁用的,无论是本地访问还是远程访问(SSH)均不可用。这意味着,在未启用 Shell 或 SSH 前,你将无法执行任何 ESXi Shell 命令。
VMware 之所以这样设计,是出于安全性考虑:避免未经授权的 CLI 操作破坏主机配置或暴露系统漏洞。
通过默认 ESXi 界面启用控制台
当你可以直接接触 ESXi 主机的物理控制台(即连接了显示器和键盘的情况),可以使用主机默认界面(DCUI)来启用 Shell 和 SSH:
- 进入 ESXi 主机的 DCUI(蓝色控制台界面);
- 按 F2 登录管理界面,输入 root 用户名与密码;
- 选择菜单项:Troubleshooting Options(故障排除选项);
- 定位到:
- Enable ESXi Shell
- Enable SSH
使用回车键(Enter)依次启用这两个选项。
通过 VMware Host Client(Web 页面)启用控制台访问
- 在浏览器地址栏中输入 ESXi 主机的 IP 地址,访问 Web 管理页面;
- 使用 root 账号登录;
- 点击左侧导航栏的 Host(主机);
- 依次进入:
Actions(操作) > Services(服务) > Enable Secure Shell (SSH)
启用后,SSH 服务将在当前会话中生效,直到 ESXi 主机重启为止。
通过 vCenter 和 vSphere Client 启用控制台访问
- 在浏览器中登录 VMware vSphere HTML5 Web Client;
- 导航至左侧菜单 “Hosts and Clusters(主机与集群)”,选择目标 ESXi 主机;
- 点击上方标签页 “Configure(配置)”;
- 展开左侧导航:System(系统) > Services(服务);
- 在服务列表中,找到 SSH;
- 点击 Start 按钮,即可立即启动 SSH 服务(仅在当前运行周期内生效);
二、通过 SSH 连接到 ESXi 主机
- 打开你常用的 SSH 客户端工具,例如:
- ✅ PuTTY(Windows)
- ✅ Terminal(macOS/Linux 自带)
- ✅ Termius、MobaXterm 等高级工具
输入 ESXi 主机的管理 IP 地址;
使用账号 root 和对应密码登录;
直接通过 Linux 系统内置的终端工具连接到 ESXi 主机
ssh 192.168.101.221 或则ssh [email protected]
三、ESXCLI 命令概览ESXCLI 是 ESXi Shell 的一部分,是一个强大的命令行框架,用于管理虚拟基础架构中的各个组件(包括硬件、网络、存储等),并能在底层对 ESXi 主机本身进行控制。从技术角度讲,ESXCLI 实际上是一个 Python 脚本,位于 ESXi 主机的路径 /bin/esxcli.py。所有的 ESXCLI 命令都必须在 ESXi Shell(控制台)环境下运行。你可以通过执行以下命令,定位 esxcli 命令的位置并了解 ESXCLI 的相关信息:which esxclils -l /sbin/esxcli
通过查看控制台输出,你可以确认 esxcli 是一个用 Python 编写的脚本,位于 ESXi 主机的 /sbin/ 目录下。
如果你想查看该脚本的具体内容,可以使用 ESXi 自带的文本编辑器 vi 来打开它。
ESXCLI 的基本语法格式如下:**esxcli [options] {namespace}+ {cmd} [cmd options]**也就是说,ESXCLI 由多个“分支”组成,这些分支即为 ESXCLI 命令的主要分类——命名空间(namespaces)。需要注意的是,ESXCLI 命令区分大小写,与 ESXi 中其他控制台命令类似,使用时需严格遵循大小写规则。运行以下命令可以列出当前 ESXi 版本支持的全部 ESXCLI 命令及命名空间:esxcli esxcli command list
不同版本的 ESXi 支持的 ESXCLI 命令可能存在差异;随着 ESXi 的不断迭代更新,新的命令和功能会被不断加入。
因此,ESXi 8.0 版本中常用的 ESXCLI 命名空间(Namespaces)列表如下:
- device - 设备管理相关命令,涵盖物理和虚拟设备的查询与配置
- esxcli - 与 ESXCLI 本身相关的命令,用于查看版本、帮助信息等
- fcoe - 以太网光纤通道(Fibre Channel over Ethernet,FCoE)相关命令
- graphics - VMware 图形相关的命令,用于管理图形硬件和配置
- hardware - 查看硬件属性和配置硬件的命令,例如 CPU、内存、PCI 设备等
- iscsi - VMware iSCSI 存储相关命令,支持 iSCSI 适配器和连接管理。
- network - 网络命名空间,涵盖主机网络设置(如 IP 地址、DNS、防火墙)以及虚拟网络组件(如 vSwitch、端口组)的管理
- nvme - 管理 VMware NVMe 驱动扩展的命令
- rdma - 用于管理远程直接内存访问(RDMA)协议栈的命令
- sched - 配置调度器和 VMkernel 系统属性的命令
- software - 管理 ESXi 软件镜像和软件包(VIB)的命令
- storage - 用于管理存储设备和存储路径的命令
- system - 配置 VMkernel 系统属性、内核核心系统及系统服务的命令
- vm - 控制虚拟机操作的部分命令
- vsan - VMware vSAN 相关的管理命令
主要的 ESXCLI 命令通常以动词形式呈现,用于表示具体的操作动作,例如:
list -列出指定命名空间下的对象或资源
esxcli hardware bootdevice list (显示可用的启动设备列表)
get - 获取指定设置或属性的当前值
esxcli hardware clock get(查看当前硬件时钟时间)
set - 手动设置参数或配置项的值
esxcli hardware clock set -y 2024 -s 00(将年份设置为 2024,秒数设置为 00)
load / unload - 加载或卸载系统配置模块或服务
esxcli network firewall load(加载防火墙模块及配置文件中保存的防火墙设置)
如果你一时记不清某个 ESXCLI 命令或对应命名空间下的具体子命令,可以直接在控制台中输入命令的前缀,系统会自动输出提示信息,帮助你理解可用的子命令和参数结构。
比如,你可以输入以下命令来查看某个命名空间下的所有可用子命令:
esxcli network,直接回车,这将列出 network 命名空间中支持的所有子命令。
进一步,你可以继续深入查看更具体的子命令,比如:
**esxcli network vm,直接回车,**该命令会列出 network vm 命名空间下与虚拟机网络相关的所有操作命令。
通过这种方式,你可以像浏览目录一样逐层探索 ESXCLI 命令结构,即使不记得完整命令也能轻松定位所需操作。
ESXCLI 的日志文件位于以下路径:/var/log/esxcli.log
当某条 ESXCLI 命令执行失败时,相关错误信息会被记录到该日志文件中。如果命令执行成功,则不会向该日志文件写入任何内容。因此,当你在排查命令执行问题时,可以优先查看该日志文件获取详细的错误信息,有助于快速定位问题根源。四、常用 ESXCLI 命令汇总
在了解了 ESXCLI 命令的基本工作原理之后,接下来我们将介绍一些在 VMware vSphere 环境中非常实用的 ESXCLI 命令示例。本章节的命令清单将按照命名空间(namespace)分类组织,便于查阅和理解。例如网络(network)、存储(storage)、系统(system)等类别,分别对应 ESXCLI 命令的核心功能模块。
用于查看 ESXi 硬件信息的常用命令通过使用 hardware 命名空间,可以查看主机中已安装硬件设备的详细信息。
要查看 ESXi 主机中已安装的 PCI 设备,可运行以下命令:
**esxcli hardware pci list | more (**此命令会列出所有 PCI 设备的详细信息,并通过分页方式显示,便于逐页阅读)
要检查 ESXi 主机上安装的物理内存总量,使用以下命令:
**esxcli hardware memory get (**该命令将返回主机的内存容量、可用页数等相关信息)
查看已安装处理器的详细信息,运行以下命令:
esxcli hardware cpu list (该命令将列出主机中所有 CPU 的型号、核心数、线程数及其他相关硬件信息)
ESXCLI system介绍
在本节中,你将看到属于 system 命名空间下的 ESXCLI 命令。
查看 ESXi 的精确版本号及构建编号,包括已安装的更新和补丁数量:
esxcli system version get
查看 ESXi 主机的主机名:
esxcli system hostname get
查看 ESXi 主机的安装时间:
esxcli system stats installtime get
查看 SNMP 配置:
esxcli system snmp get
将 ESXi 主机切换到维护模式:
esxcli system maintenanceMode set –enable yes
退出维护模式:
esxcli system maintenanceMode set –enable no
关闭 ESXi 主机电源:
esxcli system shutdown poweroff
重启 ESXi 主机:
esxcli system shutdown reboot
带延迟和重启原因的重启命令:
esxcli system shutdown reboot -d 60 -r “Installing patches”
其中,-d 60 表示延迟 60 秒后执行重启,-r 后面跟的是写入系统日志的重启原因。
除了默认的背景屏幕和主菜单提示(例如:“<F2> Customize System/View Logs <F12> Shut Down/Restart” 以及管理主机的 IP 地址),你还可以通过命令设置自定义的欢迎消息。设置自定义欢迎信息后,黑屏界面将只显示你设置的消息内容。如果需要提醒用户操作,可以在自定义信息中提示“请按 F2”,避免使用者产生困惑自定义欢迎消息可以用来在未登录状态下,隐藏连接到 ESXi 主机显示器上的敏感信息,增强安全性。设置自定义欢迎消息示例:esxcli system welcomemsg set -m=”Welcome to SZYY! Press F2”查看当前欢迎消息:
esxcli system welcomemsg get
通过此命令,可以验证当前是否已经设置了自定义欢迎消息。
ESXCLI Network 命令集介绍
Network 是 ESXCLI 中最大的命名空间之一,包含了大量用于网络配置和管理的命令。
接下来,我们将重点介绍一些在网络诊断和故障排查中非常实用的命令,帮助你快速定位和解决网络相关问题。
执行以下命令可列出当前 ESXi 主机上所有活跃的网络连接:
esxcli network ip connection list
运行以下命令可以列出 ESXi 主机上所有已安装的物理网络适配器:
esxcli network nic list (该命令显示网卡名称、驱动、链路状态和速度等关键信息,便于网络故障排查和硬件检查)
显示网络接口详细信息:
esxcli network ip interface list
显示主机上网络接口的 IPv4 地址信息:
esxcli network ip interface ipv4 get
显示虚拟机的网络信息:
esxcli network vm list
查看域名搜索设置:
esxcli network ip dns search list
查看配置的 DNS 服务器列表:
esxcli network ip dns server list
列出标准虚拟交换机(vSwitch)及端口组:
esxcli network vswitch standard list
检查防火墙状态:
esxcli network firewall get
查看指定网卡(如 vmnic0)的流量统计信息:
esxcli network nic stats get -n vmnic0
列出防火墙规则集:
esxcli network firewall ruleset list
注意:ESXi 防火墙默认策略是拒绝所有未明确允许的流量
临时禁用 ESXi 主机防火墙(用于排查问题):
esxcli network firewall set –enabled false
重新启用防火墙:
esxcli network firewall set –enabled true
出于安全考虑,建议始终保持 ESXi 防火墙处于启用状态。
network命名空间包含大量命令,本章仅介绍其中最基础且常用的部分。ESXCLI 可以配置非常丰富的网络参数,但完整详尽的操作讲解较为繁琐,超出了本篇文章的范围。ESXCLI Storage 命令集介绍storage命令集允许你查看和管理存储相关的设置。
查看已挂载的 VMFS 卷信息:
esxcli storage vmfs extent list
查看 VMFS 文件系统与磁盘设备的映射关系:
esxcli storage filesystem list
列出系统中所有 iSCSI 路径:
esxcli storage core path list
显示已挂载的 NFS 共享列表:
esxcli storage nfs list
如何使用 ESXCLI 检查硬盘 SMART 状态
S.M.A.R.T.(自我监控、分析与报告技术)是硬盘内置的一项健康监控机制,在 VMware ESXi 环境中同样适用。
通过读取硬盘的 S.M.A.R.T. 数据,管理员可以及时识别潜在的磁盘问题。
如果 S.M.A.R.T. 检测到异常指标,如过高的重映射扇区计数、读取错误率或温度问题,您可以提前规划磁盘更换,防止因存储故障造成的业务中断。
- 列出所有存储设备,使用以下命令查看当前 ESXi 主机中识别到的所有存储设备,以及每个设备的唯一标识(例如 naa.xxx):esxcli storage core device list
- 获取目标磁盘的 S.M.A.R.T. 数据一旦确定了设备名称,即可使用如下命令读取该磁盘的 S.M.A.R.T. 状态:esxcli storage core device smart get -d naa.50026b7267020435其中 naa.50026b7267020435 是示例磁盘的唯一标识,实际使用时请替换为您的目标磁盘设备名。
查看 ESXi 主机中的 iSCSI 适配器列表在 VMware vSphere 环境中,iSCSI(Internet Small Computer System Interface) 是一种常用的块级共享存储访问协议,广泛用于连接外部 SAN 存储设备。为了简化对 iSCSI 配置与诊断的操作,ESXi 提供了专门的 iscsi 命名空间,允许管理员通过命令行方式执行各类 iSCSI 相关的任务,包括适配器管理、目标连接、网络绑定等。使用以下命令可以查看 iscsi 命名空间下可用的子命令:esxcli iscsi输出将显示包括如下子模块在内的可用命令集合:
- adapter – 管理 iSCSI 适配器
- networkportal – 查看和管理 iSCSI 网络绑定端口
- session – 查看当前 iSCSI 会话状态
- target – 列出可发现和已连接的 iSCSI 目标(Target)
查看 iSCSI 适配器列表:esxcli iscsi adapter list重新发现与扫描 iSCSI 适配器:esxcli iscsi adapter discovery rediscover -A vmhba65esxcli storage core adapter rescan -A adapter_name如果你不想指定具体的适配器(使用 -A adapter_name),可以使用 –all 参数对所有存储适配器进行重新扫描。检查ESXi VIB包在 VMware vSphere 环境中,ESXi 所使用的软件包通常以 VIB 文件(vSphere Installation Bundle) 的形式进行分发。
VIB 文件是什么?
可以理解为一种类似“容器”的打包格式,内部包含:
- 可安装的模块化软件包
- 包描述信息(descriptor)
- 数字签名文件(用于完整性验证)
通常,多个 VIB 文件会打包在一个 ZIP 压缩文件中,作为安装包整体进行传输与部署。
查看已安装的 VIB 软件包要列出当前 ESXi 主机上已安装的所有 VIB 软件包,可执行以下命令:
esxcli software vib list
此命令将显示每个 VIB 包的详细信息,包括名称、版本、供应商、安装日期等。对进行补丁审计或检查驱动兼容性尤为有用。
安装 VIB 软件包(需维护模式)
在部署新驱动、补丁或自定义模块时,可通过以下命令安装 VIB 文件:
esxcli software vib install -d
/vmfs/volumes/datastore1/patches/patch_name.zip
通过 ESXCLI 管理虚拟机操作
在 VMware ESXi 环境中,除了使用 vSphere Web Client 或 vCenter GUI 工具之外,我们还可以通过 ESXCLI 命令行工具 来对虚拟机(VM)进行精细控制和诊断操作。
ESXCLI 提供了 vm 子命令,用于查看和管理当前 ESXi 主机上的虚拟机运行状态。
查看当前运行的虚拟机列表:
esxcli vm process list
该命令将列出当前所有在运行状态的虚拟机,包括以下信息:
- VM 名称
- 世界 ID(World ID,VMware 内部的运行实例标识)
- 配置文件路径(.vmx 文件)
- UUID
如果某台虚拟机无法通过 GUI 关闭,或已处于非响应状态,可以通过以下命令强制终止其进程:esxcli vm process kill –type=[soft|hard|force] –world-id=<WorldID>esxcli vm process kill -w 75498 -t softesxcli vm process kill -w 75498 -t hard参数说明:–type 可选值:
- soft:发送正常的关机请求(类似于按电源按钮)
- hard:强制关闭虚拟机电源(类似于断电)
- force:立即终止 VM 进程(最激进方式)
--world-id:从上面 process list 获取到的虚拟机 World ID✅ 推荐优先使用 soft 模式,若无效再考虑 hard 或 force除了 ESXCLI,你还应该掌握的 ESXi Shell 常用命令你可以直接通过以下命令,在 ESXi Shell 中打开 DCUI(Direct Console User Interface):dcui注意:这个命令只能在直接连接到主机的终端中使用(如 iDRAC、iLO、物理显示器,或串口),不能在通过 SSH 登录时使用。在使用 esxtop 命令打开任务管理器界面后,你可以通过快捷键切换不同的性能监控视图。这对于定位 ESXi 主机上的性能瓶颈非常高效。
快捷键 | 模块名称 | 说明 |
---|---|---|
C | CPU | 查看各个逻辑核心的使用率、负载等信息 |
I | Interrupt | 显示中断请求(IRQ)相关的性能数据 |
M | Memory | 查看主机内存使用情况,包括空闲、共享等 |
N | Network | 监控物理和虚拟网络设备的数据包流量 |
D | Disk Adapter | 显示磁盘适配器的 IO 性能信息 |
U | Disk Device | 显示物理磁盘设备的延迟、吞吐量等数据 |
V | Disk VM | 查看各虚拟机层级的磁盘 IO 性能信息 |
P | Power Mgmt | 查看主机的电源状态与节能策略相关数据 |
📁 文件管理与日志分析
命令 | 说明 |
---|---|
ls -l /vmfs/volumes/ | 查看所有数据存储及其内容 |
df -h | 查看各存储挂载点的使用情况(类似 Linux) |
du -h /vmfs/volumes/datastore1/VM_NAME/ | 检查某台虚拟机目录的占用空间 |
cat /var/log/vmkernel.log | 查看核心日志文件,诊断硬件或驱动问题 |
tail -f /var/log/hostd.log | 实时跟踪 hostd 日志(主机服务相关) |
tail -f /var/log/vpxa.log | 跟踪 vCenter Agent 日志,排查连接问题 |
🔌 网络与服务排查
命令 | 说明 |
---|---|
esxcfg-vswitch -l | 显示标准虚拟交换机及其端口组配置 |
esxcfg-nics -l | 列出所有物理网卡及其状态 |
ping <目标IP> | 网络连通性测试 |
nc -zv <IP> <PORT> | 检查端口连通性(ESXi 7.0+ 默认支持 nc 命令) |
🛠 服务管理与故障修复
命令 | 说明 |
---|---|
/etc/init.d/hostd restart | 重启主机守护服务(hostd) |
/etc/init.d/vpxa restart | 重启 vCenter Agent(vpxa) |
vim-cmd vmsvc/getallvms | 显示所有注册的虚拟机及其 VMID |
vim-cmd vmsvc/power.getstate <VMID> | 获取虚拟机电源状态 |
vim-cmd vmsvc/power.off <VMID> | 关闭虚拟机(逻辑方式) |
vim-cmd vmsvc/unregister <VMID> | 从 ESXi 中注销虚拟机(慎用) |
🔐 用户与权限
命令 | 说明 |
---|---|
esxcli account list | 查看现有本地用户 |
esxcli account add -c -u username | 创建用户 |
esxcli system permission set –id username –role Admin | 授权用户为管理员 |
🚨 快速查看主机信息
命令 | 说明 |
---|---|
vmware -v | 显示当前主机的 VMware ESXi 版本 |
uptime | 查看主机运行时长与平均负载 |
`esxcfg-info | less` |
五、总结
在 VMware vSphere 环境中,除了 vSphere Client 和 Host Client 提供的图形化界面外,命令行工具同样是系统管理员不可或缺的利器。通过 ESXi Shell 或远程 SSH 访问,你可以深入操作系统组件、网络设置、存储配置、VIB 软件包管理以及虚拟机生命周期控制。
本文汇总了大量常用且高效的 ESXCLI 命令,帮助你完成以下任务:
- 🔧 系统状态监控与维护模式切换
- 🌐 网络连接、DNS、端口组与防火墙配置
- 💾 存储卷、路径、设备及 SMART 状态查看
- 📦 安装与列出 VIB 安装包
- 🖥️ 管理运行中的虚拟机进程
借助这些命令,你不仅能执行图形界面无法完成的高级配置,还可以更快速地完成批量任务,极大提升运维效率。