Los comandos ESXCLI más útiles para su entorno VMware
Puede utilizar vSphere Client, la GUI proporcionada por VMware, y VMware vSphere Web/HTML5 Client, que está basado en web, para gestionar hosts ESXi y su entorno VMware. Aunque la mayoría de los ajustes están disponibles en la GUI, es posible que a veces necesite obtener información o cambiar una configuración que no se muestra en la GUI.
En este caso, necesitas la interfaz de línea de comandos (CLI) o la «consola», que te permite configurar todos los ajustes, incluidos los ocultos. Además de los comandos tradicionales que son los mismos en Linux y ESXi, ESXi tiene sus propios comandos ESXCLI.
Esta entrada de blog se ha creado en el formato de un catálogo que enumera comandos ESXCLI útiles, que forman parte de los comandos de shell de ESXi.
Cómo abrir la consola ESXi Shell
Por defecto, ESXi shell está desactivado para el acceso local y remoto. Esto significa que no puede ejecutar comandos de shell ESXi hasta que habilite el shell ESXi o el acceso SSH. VMware impone esta restricción por motivos de seguridad.
Veamos los tres métodos principales para habilitar la interfaz de línea de comandos en ESXi.
Habilitar el acceso a la consola utilizando la interfaz ESXi por defecto
Este método se utiliza cuando se tiene acceso físico a un host ESXi, incluyendo el monitor y el teclado del host.
- En el ESXi Direct Console User Interface (DCUI), vaya a Troubleshooting Options, navegue hasta Enable ESXi Shell y Enable SSH strings, y pulse Enter para habilitar cada opción.
- Después de habilitar el shell ESXi, pulse Alt+F1 para abrir la consola en la máquina que ejecuta ESXi. Después deberá introducir su nombre de usuario y contraseña (se pueden utilizar las credenciales del usuario root).
- Puede ejecutar comandos shell ESXi.
- Si necesita volver a ESXi DCUI, pulse Alt+F2. La opción Habilitar SSH le permite abrir la consola ESXi de forma remota utilizando un cliente SSH.
Habilitación del acceso a la consola mediante VMware Host Client
- Abra un navegador web, introduzca la dirección IP de su host ESXi en la barra de direcciones e inicie sesión.
- Vaya a Host > Acciones > Servicios y haga clic en Habilitar Secure Shell (SSH) para habilitar el acceso SSH hasta el reinicio de ESXi.
Del mismo modo, puede activar el shell de consola en un host ESXi local en el menú Servicios . Vaya a Gestionar servicios>. Haga clic con el botón derecho en el servicio TSM-SSH. Hit Policy > Start and Stop with host para habilitar el acceso SSH incluso después de reiniciar ESXi.
- Ahora puede conectarse a la consola ESXi utilizando su cliente SSH de forma remota.
Habilitación del acceso a la consola mediante vCenter y VMware vSphere Client
Este método puede utilizarse si su host ESXi está gestionado por vCenter Server.
- Inicie sesión en VMware HTML5 vSphere Client en un navegador web.
- Vaya a Hosts y Clusters y seleccione su host ESXi.
- Seleccione la pestaña Configurar, abra Sistema > Servicios y haga clic en SSH en la lista de servicios.
- Pulse Iniciar para iniciar el servidor SSH una vez o pulse Editar Política de Inicio y seleccione Iniciar y Detener con host si desea habilitar el servidor SSH durante un periodo de tiempo prolongado. También puede activar ESXi shell en el menú Servicios.
Una vez habilitado el acceso SSH, puede conectarse a un host ESXi con un cliente SSH de forma remota y ejecutar comandos ESXCLI.
Conexión mediante SSH
Para conectarse a la consola ESXi de forma remota a través de SSH, en la consola Linux, realice las siguientes acciones.
- Ejecuta un comando como:
ssh 192.168.101.221
o
ssh root@192.168.101.221
donde 192.168.101.221 es la dirección IP del servidor ESXi utilizado en este ejemplo.
- Debe introducir el nombre de usuario y la contraseña del usuario ESXi(root puede utilizarse como usuario administrativo por defecto en ESXi).
Del mismo modo, puede conectarse desde un host ESXi a otro a través de SSH en la línea de comandos.
En Windows, puede utilizar PuTTY:
- Abrir PuTTY
- Introduzca la dirección IP y el puerto del host ESXi.
- Pulse Abrir para conectarse al host ESXi a través de SSH.
Conectarse a un host ESXi a través de SSH y ejecutar comandos ESXCLI de forma remota es el enfoque más utilizado y seguro.
Cómo instalar ESXCLI en Linux
La forma alternativa de ejecutar comandos ESXCLI remotamente es instalando ESXCLI en Linux. Para ello es necesario instalar Python. A continuación se indican los pasos principales para instalar ESXCLI en Linux:
- Haga un backup de su máquina Linux antes de realizar cambios en el sistema.
- Descargue ESXCLI del sitio web de VMware
- Extraiga el contenido del archivo esxcli-8.0.0-22179150.tgz descargado (ejecútelo como root):
tar zxf esxcli-8.0.0-22179150.tgz -C /opt/vmware
- Ejecute el instalador de ESXCLI con el comando:
python setup.py install
- Intente conectarse a un host ESXi y ejecute un comando en ESXCLI de forma remota:
esxcli --server ESXI_IP_address --help
Obtendrá un error porque ESXi requiere una relación de confianza entre hosts:
Error de certificado. Huella SHA-256 del servidor: 64:CC:E5:F8:A4:AA:F6:9B:58:55:78:B7:E3:B3:69:10:83:3B:22:3C:BB:17:3D:12:28:D1:CD:E9:48:7A:FF:AA (not trusted)
- Para solucionar este problema, ejecute el comando especificando un nombre de usuario, una contraseña y la huella digital mostrada en el mensaje de salida anterior:
esxcli --server 192.168.101.101 --username root --password 'your_password' --thumbprint 64:CC:E5:F8:A4:AA:F6:9B:58:55:78:B7:E3:B3:69:10:83:3B:22:3C:BB:17:3D:12:28:D1:CD:E9:48:7A:FF:AA --help
Alternativamente, puede intentar instalar un certificado en una máquina Linux. Un certificado se almacena en /etc/vmware/ssl/rui.crt en un host ESXi.
Descripción general de los comandos de ESXCLI
ESXCLI, parte del shell de ESXi, es un marco CLI para gestionar una infraestructura virtual (componentes de ESXi como hardware, red, almacenamiento, etc.) y controlar el propio ESXi a bajo nivel. Técnicamente, ESXCLI es un script de Python (/bin/esxcli.py en ESXi). Todos los comandos ESXCLI deben ejecutarse en el shell ESXi (consola). Generalmente, esxcli
es el comando que tiene una amplia lista de subcomandos llamados namespaces y sus opciones. El comando esxcli
está presente justo después de la instalación de ESXi, junto con otros comandos shell de ESXi.
Puede localizar esxcli y explorar la naturaleza de ESXCLI tras ejecutar los siguientes comandos:
which esxcli
ls -l /sbin/esxcli
Como puede comprobar comprobando la salida de la consola, ESXCLI es un script escrito en Python que se encuentra en el directorio /sbin/. Si desea ver el contenido del script, puede utilizar el editor de texto incorporado vi.
Básicamente, la sintaxis de ESXCLI es la siguiente:
esxcli [options] {namespace}+ {cmd} [cmd options]
Así, ESXCLI consta de ramas que son las principales categorías (namespaces) de comandos ESXCLI. Observe que los comandos de esxcli distinguen entre mayúsculas y minúsculas, de forma similar a otros comandos de consola utilizados en ESXi. La lista completa de todos los espacios de nombres y comandos ESXCLI disponibles se muestra tras ejecutar el comando:
esxcli esxcli command list
La lista de comandos ESXCLI disponibles depende de la versión de ESXi. Se pueden añadir nuevos comandos.
Por lo tanto, la lista de los principales espacios de nombres de ESXCLI para ESXi 8.0 es la siguiente:
- dispositivo – comandos del administrador de dispositivos
- esxcli – comandos relacionados con la propia ESXCLI
- fcoe – Comandos de canal de fibra sobre Ethernet
- gráficos – comandos gráficos de VMware
- hardware – comandos para comprobar las propiedades del hardware y configurarlo
- iscsi – Comandos iSCSI de VMware
- red – este espacio de nombres incluye una amplia gama de comandos para gestionar ajustes generales de red del host (como la dirección IP, ajustes DNS de un host ESXi, cortafuegos) y componentes de red virtuales como vSwitch, grupos de puertos, etc.
- nvme – gestión de extensiones para el controlador NVMe de VMware
- rdma – comandos para gestionar la pila del protocolo de acceso remoto directo a memoria
- sched – comandos utilizados para configurar la programación y las propiedades del sistema VMkernel
- software – gestión de imágenes de software ESXi y paquetes para ESXi
- almacenamiento – comandos utilizados para gestionar el almacenamiento
- system – comandos para configurar las propiedades del sistema VMkernel, el núcleo del sistema y los servicios del sistema
- vm – algunos comandos que se pueden utilizar para controlar las operaciones de la máquina virtual
- vsan – Comandos de VMware vSAN
Los comandos principales aparecen como verbos que indican la misma acción:
- list – muestra la lista de objetos disponibles para el espacio de nombres definido (por ejemplo,
esxcli hardware bootdevice list
– lista los dispositivos de arranque disponibles) - get – obtener el valor del ajuste o propiedad definida (por ejemplo,
esxcli hardware clock get
– comprobar la hora ajustada) - set – establece manualmente el parámetro necesario (por ejemplo,
esxcli hardware clock set -y 2024 -s 00
– establece el año en 2024 y los segundos en 00) - cargar/descargar – cargar/descargar la configuración del sistema (
esxcli network firewall load
– cargar el módulo cortafuegos y los ajustes del cortafuegos almacenados en el archivo de configuración)
Si no puede recordar un comando ESXCLI concreto relacionado con el espacio de nombres adecuado, puede introducir el comando y ver un consejo en la salida de la consola.
Por ejemplo, escriba:
esxcli network
para ver todos los comandos disponibles para el espacio de nombres de red
y, a continuación, escriba:
esxcli network vm
para comprobar los comandos del espacio de nombres vm.
El archivo de registro de ESXCLI se encuentra en /var/log/esxcli.log
Los datos se escriben en este archivo si un comando ESXCLI no se ha ejecutado correctamente. Si un comando ESXCLI se ejecuta correctamente, no se escribe nada en este archivo de registro.
Comandos ESXCLI útiles
Ahora que está familiarizado con el principio básico de funcionamiento de los comandos ESXCLI, veamos ejemplos específicos de comandos útiles que se pueden utilizar en VMware vSphere. La lista de comandos ESXCLI considerados en este artículo se divide en categorías equivalentes a los nombres de los espacios de nombres.
Comandos para comprobar los detalles del hardware en ESXi
Utilizando el espacio de nombres de hardware, puede ver la información completa sobre los dispositivos instalados.
- Para ver los dispositivos PCI instalados, ejecute el siguiente comando ESXCLI:
esxcli hardware pci list | more
- Compruebe la cantidad de memoria instalada en el servidor ESXi:
esxcli hardware memory get
- Ver la información detallada sobre los procesadores instalados:
esxcli hardware cpu list
Comandos del sistema ESXCLI
En esta sección, puede ver los comandos del espacio de nombres ESXCLI del sistema.
- Compruebe la versión exacta de ESXi y el número de compilación, incluido el número de actualizaciones y parches instalados:
esxcli system version get
- Compruebe el nombre de host de un servidor ESXi:
esxcli system hostname get
- Compruebe la hora de instalación de ESXi:
esxcli system stats installtime get
- Compruebe la configuración SNMP:
esxcli system snmp get
- Introduzca el host ESXi en el modo de mantenimiento:
esxcli system maintenanceMode set --enable yes
- Salir del modo de mantenimiento:
esxcli system maintenanceMode set --enable no
Después de introducir un host ESXi en el modo de mantenimiento, puede apagar o reiniciar el host.
- Apagar un host ESXi:
esxcli system shutdown poweroff
- El comando para reiniciar el host es similar:
esxcli system shutdown reboot
- También puedes establecer un retardo y escribir una razón de reinicio del host para que se guarde en los registros del sistema:
esxcli system shutdown reboot -d 60 -r "Instalando parches"
En este ejemplo, el retraso es de 60 segundos.
Otro comando consiste en configurar el mensaje de bienvenida personalizado en lugar de una pantalla de fondo estándar con un menú principal inactivo sombreado en el que se muestra «<F2> Personalizar sistema/Ver registros <F12> Apagar/Reiniciar» y se muestra la dirección IP para gestionar el host. Tenga en cuenta que después de configurar un mensaje de bienvenida personalizado, sólo verá este mensaje configurado en la pantalla negra. Puedes escribir «Pulsar F2″ manualmente para evitar confusiones.
- El mensaje personalizado se puede utilizar para ocultar información sobre su host ESXi en la pantalla conectada al host ESXi cuando un usuario no ha iniciado sesión.
esxcli system welcomemsg set -m="Welcome to NAKIVO! Press F2"
- Compruebe si el mensaje de bienvenida ya está configurado:
esxcli system welcomemsg get
Comandos de red ESXCLI
El espacio de nombres de red es uno de los espacios de nombres más grandes de ESXCLI. Exploremos los comandos que pueden ser útiles para el diagnóstico.
- Compruebe el estado de las conexiones de red activas:
esxcli network ip connection list
- Ver la lista de adaptadores de red instalados:
esxcli network nic list
- Muestra la información sobre las interfaces de red:
esxcli network ip interface list
- Muestra la información sobre las direcciones IP de las interfaces de red presentes en el servidor:
esxcli network ip interface ipv4 get
- Muestra la información de red de las máquinas virtuales:
esxcli network vm list
- Ver los ajustes de búsqueda de dominios:
esxcli network ip dns search list
- Ver los servidores DNS configurados en los ajustes de red:
esxcli network ip dns server list
- Lista de conmutadores virtuales y grupos de puertos:
esxcli network vswitch standard list
- Muestra las estadísticas de la interfaz de red vmnic0:
esxcli network nic stats get -n vmnic0
- Compruebe el estado del cortafuegos y los ajustes de las reglas:
esxcli network firewall get
esxcli network firewall ruleset list
NOTA: La política predeterminada del cortafuegos es eliminar el tráfico si no se establecen las reglas opuestas.
- Puede desactivar temporalmente el cortafuegos en un host ESXi para solucionar problemas:
esxcli network firewall set --enabled false
- El cortafuegos debe estar activado con el comando:
esxcli network firewall set --enabled true
Se recomienda tener activado el cortafuegos de ESXi por motivos de seguridad.
El espacio de nombres de red incluye muchos comandos. En la sección Red de la entrada de blog de hoy sólo se consideran las más básicas y populares. Es posible configurar un gran número de parámetros de red con ESXCLI, pero requeriría un largo recorrido que está fuera del alcance del artículo de hoy.
Comandos de almacenamiento de ESXCLI
El espacio de nombres de almacenamiento permite comprobar y editar los ajustes de almacenamiento.
- Compruebe la información sobre los volúmenes VMFS montados:
esxcli storage vmfs extent list
- Ver las asignaciones de los sistemas de archivos VMFS a los dispositivos de disco:
esxcli storage filesystem list
- Lista todas las rutas iSCSI del sistema:
esxcli storage core path list
- Muestra la lista de recursos compartidos NFS montados:
esxcli storage nfs list
Cómo comprobar SMART en ESXCLI
S.M.A.R.T. es útil para el diagnóstico de discos y para prevenir fallos de disco. Puedes leer el S.M.A.R.T. datos y, si descubres que algo va mal con el disco, puedes tomar a tiempo la decisión de sustituirlo.
- En primer lugar, enumere todos los dispositivos de almacenamiento y localice el nombre único del dispositivo (consulte la captura de pantalla siguiente):
esxcli storage core device list
- A continuación, utilice el comando para obtener el S.M.A.R.T. datos de ese dispositivo de disco:
esxcli storage core device smart get -d naa.50026b7267020435
donde naa.50026b7267020435 es el nombre del dispositivo utilizado en este ejemplo.
Compruebe la lista de adaptadores iSCSI
iSCSI es un protocolo ampliamente utilizado para acceder al almacenamiento compartido a nivel de bloque, y existe un espacio de nombres iscsi independiente en ESXCLI para gestionar el almacenamiento iSCSI.
- Muestra la lista de adaptadores iSCSI disponibles:
esxcli iscsi adapter list
- Re-descubrir y re-escanear adaptadores iSCSI:
esxcli iscsi adapter discovery rediscover -A adapter_name
esxcli storage core adapter rescan -A adapter_name
En lugar de -A adapter_name
puede volver a escanear todos los adaptadores utilizando la opción --all
opción
Compruebe la lista VIB del software ESXi
Los paquetes de software destinados a ESXi suelen distribuirse como archivos VIB (vSphere installation bundle). Un archivo VIB es similar a un contenedor con paquetes comprimidos que se pueden instalar en el sistema, con un descriptor y un archivo de firma. A su vez, los VIB suelen distribuirse como ficheros empaquetados en un archivo comprimido en el formato ZIP estándar. Puede que necesite incluir VIBs en una imagen ESXi para utilizar el hardware adecuado o instalar VIBs en un sistema existente para aplicar un parche de seguridad.
- Puede ver la lista de paquetes VIB instalados en su host ESXi:
esxcli software vib list
- Puede instalar una VIB con ESXCLI (el host ESXi debe estar en modo de mantenimiento):
esxcli software vib install -d /vmfs/volumes/datastore1/patches/patch_name.zip
Gestión de operaciones de máquinas virtuales en ESXCLI
El espacio de nombres vm puede utilizarse para operaciones en procesos de máquinas virtuales en ejecución.
- Comprueba la lista de máquinas virtuales en ejecución y muestra sus World IDs:
esxcli vm process list
Puede matar la máquina virtual que no responde con los comandos shell de ESXi. Usar ESXCLI, en este caso, puede ser útil cuando una VM no puede ser apagada usando GUI, como el GUI de VMware vSphere Client, VMware Host Client, o VMware Workstation.
- Apague la máquina virtual utilizando el ID de mundo que aparece en la salida del comando
esxcli vm process list
. En el ejemplo actual, el ID mundial de la máquina virtual necesaria es 75498.esxcli vm process kill -w 75498 -t soft
- Si el tipo de comando soft no fue de ayuda, considere realizar un apagado inmediato de la VM utilizando el método hard.
esxcli vm process kill -w 75498 -t hard
Hay tres opciones disponibles para el comando kill:
- suave – se envía una señal correcta en el sistema operativo invitado para apagar correctamente una máquina virtual
- hard – una máquina virtual se apaga inmediatamente
- forzar – VM se apaga de forma similar a como se apaga un ordenador al desenchufar el cable de alimentación. Utilice este tipo de apagado de la máquina virtual sólo si los dos anteriores no han funcionado.
Otros comandos útiles de ESXi Shell
Además de los comandos ESXCLI, puede utilizar muchos comandos shell ESXi:
- Abra el ESXi DCUI desde la consola (los colores son diferentes cuando se conecta a la shell ESXi a través de SSH):
dcui
Pulsa Ctrl+C para volver al símbolo del sistema.
- Convierta un disco virtual con aprovisionamiento grueso en un disco virtual con aprovisionamiento fino utilizando vmkfstools:
vmkfstools -i /vmfs/volumes/vmfs_datastore/vm_name/thick_disk.vmdk -d thin /vmfs/volumes/vmfs_datastore/vm_name/new_thin_disk_name.vmdk
Entre los comandos shell de ESXi, vmkfstools es un potente comando para realizar operaciones de almacenamiento, así como para gestionar dispositivos de almacenamiento, volúmenes VMFS y discos virtuales. Más información sobre el aprovisionamiento grueso y fino y la reducción de discos virtuales en la entrada del blog.
- Abra el administrador de tareas de ESXi:
esxtop
Después de abrir el administrador de tareas con el comando
esxtop
puedes pasar de una pestaña a otra pulsando las teclas correspondientes:C – CPU
I – interrumpir
M – memoria
N – red
D – adaptador de disco
U – dispositivo de disco
V – disco VM
P – gestión de la energía
- Busca el archivo en el directorio actual:
find . -name filename.txt
- Sustituya el carácter . por el nombre del directorio en el que desea localizar un archivo, y sustituya
filename.txt
por el nombre del archivo. Por ejemplo, si desea encontrar un archivo diskname.vmdk en el directorio /vmfs/volumes/, ejecute el comando:find /vmfs/volumes/ -name diskname.vmdk
- Abra la consola interactiva de VMware:
vsish
- Mostrar controladores vmkernel cargados:
vmkload_mod --list
- Compruebe los ajustes de la partición de intercambio:
esxcli sched swap system get
- Puedes listar usuarios utilizando uno de los siguientes comandos:
esxcli system account list
cat /etc/passwd or less/etc/passwd
- Puede ver todos los comandos ESXi ubicados en el directorio sbin:
ls /usr/sbin
Crear un nuevo usuario
Existen al menos dos métodos para crear un nuevo usuario ESXi utilizando los comandos del shell ESXi.
El comando ESXi adduser
- Si escribe el comando
adduser
en la consola ESXi, aparecerá el siguiente mensaje:-sh: adduser: no encontrado
- Debe definir la ruta completa al binario busybox apropiado para ejecutar este comando:
/usr/lib/vmware/busybox/bin/busybox adduser
Ahora puedes ver las opciones de uso de este comando.
- Por último, ejecute el comando exacto para añadir un usuario de sistema ESXi:
/usr/lib/vmware/busybox/bin/busybox adduser -s /bin/sh -G root -h / user1
Dónde:
-s /bin/sh es un intérprete de comandos utilizado tras el inicio de sesión del usuario;
-G raíz – el nombre del grupo cuyo miembro es un nuevo usuario (el grupo root);
-h / es un directorio personal (el directorio raíz) de un nuevo usuario;
usuario1 es el nombre de usuario.
- Introduzca una nueva contraseña y confírmela cuando se le solicite.
Crear un usuario en ESXCLI
Como alternativa, puede añadir un nuevo usuario con un solo comando utilizando ESXCLI:
esxcli system account add -d="NAKIVO user" -i="nakivo" -p="Password-Test321" -c="Password-Test321"
Donde:
-d significa la descripción mostrada
-p es la contraseña establecida para el nuevo usuario
-c es la confirmación de la contraseña
¿Qué método elegir para crear un nuevo usuario en la línea de comandos? El comando único utilizado en el segundo método puede parecer conveniente, pero no en términos de seguridad. Si recuerda, aparecía un mensaje de advertencia justo después de iniciar sesión en el shell de ESXi:
Todos los comandos ejecutados en el shell de ESXi se registran y pueden incluirse en paquetes de asistencia. No proporcione contraseñas directamente en la línea de comandos. La mayoría de las herramientas pueden pedir secretos o aceptarlos de la entrada estándar.
Si le preocupa la seguridad, introduzca los comandos sin incluir las contraseñas como texto sin formato en los comandos. Si se necesita una contraseña, normalmente se solicita y puede introducirse en la entrada estándar de la consola. Por ejemplo, si desea crear un nuevo usuario con ESXCLI, utilice un comando como:
esxcli system account add -d="user2" -i="user2" -p -c
Se solicitará la contraseña de ESXi por separado y no se mostrará en la consola mientras se introduce la contraseña.
Conclusión
Existen comandos de consola de VMware para gestionar los componentes del sistema, la red, el almacenamiento, el software VIB y las máquinas virtuales. El uso de la interfaz de línea de comandos en ESXi le da más poder, además de las agradables interfaces gráficas de usuario de VMware vSphere Client y VMware Host Client.
Puede utilizar los comandos shell de ESXi localmente y los comandos SSH de ESXi remotamente para ver y configurar ajustes que están ocultos o no disponibles en la GUI. Utilice la lista de comandos ESXi proporcionada en esta entrada de blog para el ajuste fino de ESXi y experimente la potencia adicional de utilizar la interfaz de línea de comandos en VMware vSphere.
Puede obtener más información leyendo sobre PowerCLI, otro tipo de interfaz de línea de comandos para gestionar VMware vSphere desde Windows PowerShell.