I comandi ESXCLI più utili per il tuo ambiente VMware
È possibile utilizzare vSphere Client, l’interfaccia grafica fornita da VMware, e VMware vSphere Web/HTML5 Client, che è basato sul web, per gestire gli host ESXi e l’ambiente VMware. Sebbene la maggior parte delle impostazioni sia disponibile nell’interfaccia grafica, a volte potrebbe essere necessario ottenere informazioni o modificare una configurazione che non viene visualizzata nell’interfaccia grafica.
In questo caso, è necessaria l’interfaccia a riga di comando (CLI) o la “console”, che consente di configurare tutte le impostazioni, comprese quelle nascoste. Oltre ai comandi tradizionali, identici in Linux e in ESXi, ESXi dispone di comandi ESXCLI propri.
Questo post del blog è stato creato sotto forma di catalogo che elenca utili comandi ESXCLI, che fanno parte dei comandi della shell di ESXi.
How to Open the ESXi Shell Console
By default, ESXi shell is disabled for local and remote access. This means that you cannot run ESXi shell commands until you enable ESXi shell or SSH access. VMware imposes this restriction for security reasons.
Let’s look at the three main methods for enabling the command line interface in ESXi.
Enabling access to the console using the default ESXi interface
This method is used when you have physical access to an ESXi host, including the host’s monitor and keyboard.
- In the Interfaccia utente della console diretta di ESXi (DCUI), go to
Troubleshooting Options, navigate toEnable ESXi ShellandEnable SSHstrings, and pressEnterto enable each option. - After enabling the ESXi shell, press
Alt+F1to open the console on the machine running ESXi. You should enter your login and password after that (the credentials of the root user can be used). - You can execute ESXi shell commands.
- If you need to go back to the ESXi DCUI, press
Alt+F2. TheEnable SSHoption allows you to open the ESXi console remotely by using an SSH client.
Enabling access to the console using VMware Host Client
- Open a web browser and enter the IP address of your ESXi host in the address bar, then log in.
- Go to
Host>Actions>Servicesand clickEnable Secure Shell (SSH)to enable SSH access until ESXi reboot.Similarly, you can enable the console shell on a local ESXi host in the
Servicesmenu. Go toManage>Services. Right-click theTSM-SSHservice. HitPolicy>Start and Stop with hostto enable SSH access even after ESXi reboot. - Now you can connect to the ESXi console by using your SSH client remotely.

Enabling access to the console using vCenter and VMware vSphere Client
This method can be used if your ESXi host is managed by vCenter Server.
- Log in to VMware vSphere Client HTML5 in a web browser.
- Go to
Hosts and Clustersand select your ESXi host. - Select the
Configuretab, openSystem>Services, and clickSSHin the list of services. - Hit
Startto start the SSH server once or hitEdit Startup Policyand selectStart and Stop with hostif you wish to enable the SSH server for an extended period of time. You can also enable ESXi shell in theServicesmenu.
Una volta abilitato l’accesso SSH, è possibile connettersi in remoto a un host ESXi tramite un client SSH ed eseguire comandi ESXCLI.
Connessione tramite SSH
Per connettersi in remoto alla console ESXi tramite SSH, dalla console Linux eseguire le seguenti azioni.
- Eseguire un comando del tipo:
ssh 192.168.101.221oppure
ssh root@192.168.101.221dove 192.168.101.221 è l’indirizzo IP del server ESXi utilizzato in questo esempio.
- È necessario inserire il nome utente e la password dell’utente ESXi (
rootpuò essere utilizzato come utente amministrativo predefinito su ESXi).
Allo stesso modo, è possibile connettersi da un host ESXi a un altro tramite SSH dalla riga di comando.
In Windows, è possibile utilizzare PuTTY:
- Aprire
PuTTY - Inserire l’indirizzo IP e la porta dell’host ESXi.
- Premere
Openper connettersi all’host ESXi tramite SSH.
La connessione a un host ESXi tramite SSH e l’esecuzione remota dei comandi ESXCLI rappresentano l’approccio più comunemente utilizzato e sicuro.
Come installare ESXCLI su Linux
Un modo alternativo per eseguire comandi ESXCLI da remoto consiste nell’installare ESXCLI su Linux. A tal fine è necessario che Python sia installato. Di seguito sono riportati i passaggi principali per l’installazione di ESXCLI su Linux:
- Eseguite il backup del vostro sistema Linux prima di apportare modifiche al sistema.
- Scaricate ESXCLI da Sito web di VMware
- Estraete il contenuto dall’archivio scaricato
esxcli-8.0.0-22179150.tgz(eseguite come root):tar zxf esxcli-8.0.0-22179150.tgz -C /opt/vmware - Eseguite il programma di installazione di ESXCLI con il comando:
python setup.py install - Prova a connetterti a un host ESXi ed esegui un comando in ESXCLI da remoto:
esxcli --server ESXI_IP_address --helpRiceverai un errore perché ESXi richiede una relazione di fiducia tra gli host:
Certificate error. Server SHA-256 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 (not trusted)
- Per risolvere questo problema, esegui il comando specificando un nome utente, una password e l’impronta digitale visualizzata nel messaggio di output precedente:
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
In alternativa, puoi provare a installare un certificato su una macchina Linux. Un certificato è memorizzato in /etc/vmware/ssl/rui.crt su un host ESXi.
Panoramica dei comandi ESXCLI
ESXCLI, parte della shell di ESXi, è un framework CLI per la gestione di un’infrastruttura virtuale (componenti ESXi quali hardware, rete, storage, ecc.) e per il controllo di ESXi stesso a basso livello. Tecnicamente, ESXCLI è uno script Python (/bin/esxcli.py in ESXi). Tutti i comandi ESXCLI devono essere eseguiti nella shell (console) di ESXi. In generale, esxcli è il comando che dispone di un ampio elenco di sottocomandi denominati “namespace” e delle relative opzioni. Il comando esxcli è disponibile subito dopo l’installazione di ESXi, insieme ad altri comandi della shell di ESXi.
È possibile individuare esxcli ed esplorarne le funzionalità dopo aver eseguito i seguenti comandi:
which esxcli
ls -l /sbin/esxcli

Come si può verificare controllando l’output della console, ESXCLI è uno script scritto in Python che ha la sua ubicazione nella directory /sbin/ . Se si desidera visualizzare il contenuto dello script, è possibile utilizzare l’editor di testo integrato vi.
Fondamentalmente, la sintassi di ESXCLI è la seguente:
esxcli [options] {namespace}+ {cmd} [cmd options]
Pertanto, ESXCLI è costituito da rami che rappresentano le categorie principali (spazi dei nomi) dei comandi ESXCLI. Si noti che i comandi esxcli distinguono tra maiuscole e minuscole, analogamente ad altri comandi da console utilizzati in ESXi. L’elenco completo di tutti i namespace e i comandi ESXCLI disponibili viene visualizzato dopo aver eseguito il comando:
esxcli esxcli command list
L’elenco dei comandi ESXCLI disponibili dipende dalla versione di ESXi. È possibile aggiungere nuovi comandi.
Pertanto, l’elenco dei principali namespace ESXCLI per ESXi 8.0 è il seguente:
device– comandi di gestione dei dispositiviesxcli– comandi relativi allo stesso ESXCLIfcoe– comandi Fibre Channel over Ethernetgraphics– comandi grafici VMwarehardware– comandi per il controllo delle proprietà hardware e la configurazione dell’hardwareiscsi– comandi iSCSI VMwarenetwork– questo namespace include un’ampia gamma di comandi per la gestione delle impostazioni di rete generali dell’host (come l’indirizzo IP, impostazioni DNS di un host VMware ESXi, firewall) e dei componenti di rete virtuale quali vSwitch, gruppi di porte, ecc.nvme– gestione delle estensioni per il driver NVMe di VMwarerdma– comandi per la gestione dello stack del protocollo Remote Direct Memory Access (RDMA)sched– comandi utilizzati per configurare la pianificazione e le proprietà di sistema di VMkernelsoftware– gestione delle immagini software ESXi e dei pacchetti per ESXistorage– comandi utilizzati per gestire lo storagesystem– comandi per configurare le proprietà di sistema di VMkernel, il sistema centrale del kernel e i servizi di sistemavm– alcuni comandi che possono essere utilizzati per controllare le operazioni delle VMvsan– comandi VMware vSAN
I comandi principali appaiono come verbi che indicano il stessa azione:
list– visualizza l’elenco degli oggetti disponibili per lo spazio dei nomi definito (ad esempio,esxcli hardware bootdevice list– elenca i dispositivi di avvio disponibili)get– recupera il valore dell’impostazione o della proprietà definita (ad esempio,esxcli hardware clock get– controlla l’ora impostata)set– imposta manualmente il parametro necessario (ad esempio,esxcli hardware clock set -y 2024 -s 00– imposta l’anno su 2024 e i secondi su 00)load/unload– caricare/scaricare la configurazione di sistema (esxcli network firewall load– caricare il modulo firewall e le impostazioni del firewall memorizzate nel file di configurazione)
Se non si riesce a ricordare un particolare comando ESXCLI relativo allo spazio dei nomi appropriato, è possibile digitare il comando e visualizzare un suggerimento nell’output della console.
Ad esempio, digitare:
esxcli network per visualizzare tutti i comandi disponibili per lo spazio dei nomi di rete
e quindi digitare:
esxcli network vm per verificare i comandi relativi allo spazio dei nomi della VM .

La ubicazione del file di log di ESXCLI è in /var/log/esxcli.log
I dati vengono scritti in questo file se un comando ESXCLI non è stato eseguito correttamente. Se un comando ESXCLI viene eseguito correttamente, non viene scritto nulla in questo file di log.
Comandi ESXCLI utili
Ora che avete acquisito familiarità con il principio di funzionamento di base dei comandi ESXCLI, esaminiamo alcuni esempi specifici di comandi utili che possono essere utilizzati in VMware vSphere. L’elenco dei comandi ESXCLI trattati in questo articolo è suddiviso in categorie corrispondenti ai nomi degli spazi dei nomi.
Comandi per verificare i dettagli hardware in ESXi
Utilizzando lo spazio dei nomi hardware è possibile visualizzare le informazioni complete sui dispositivi installati.
- Per visualizzare i dispositivi PCI installati, eseguire il seguente comando ESXCLI:
esxcli hardware pci list | more - Verificare la quantità di memoria installata sul server ESXi:
esxcli hardware memory get
- Visualizzare le informazioni dettagliate sui processori installati:
esxcli hardware cpu list
Comandi di sistema ESXCLI
In questa sezione sono riportati i comandi dello spazio dei nomi ESXCLI system .
- Verifica la versione ESXi esatta e il numero di build, compreso il numero di aggiornamenti e patch installati:
esxcli system version get - Verifica il nome host di un server ESXi:
esxcli system hostname get - Verifica la data di installazione di ESXi:
esxcli system stats installtime get
- Verifica la configurazione SNMP:
esxcli system snmp get - Metti l’host ESXi in modalità di manutenzione:
esxcli system maintenanceMode set --enable yes - Esci dalla modalità di manutenzione:
esxcli system maintenanceMode set --enable no
Dopo aver messo un host ESXi in modalità di manutenzione, è possibile spegnere o riavviare l’host.
- Spegnere un host ESXi:
esxcli system shutdown poweroff - Il comando per riavviare l’host è simile:
esxcli system shutdown reboot - È inoltre possibile impostare un ritardo e specificare un motivo per il riavvio dell’host da salvare nei log di sistema:
esxcli system shutdown reboot -d 60 -r "Installing patches"In questo esempio, il ritardo è di 60 secondi.
Un altro comando consente di impostare un messaggio di benvenuto personalizzato al posto della schermata di sfondo standard con il menu principale inattivo ombreggiato, in cui vengono visualizzati il “ suggerimento e l’indirizzo IP per la gestione dell’host. Si noti che, dopo aver impostato un messaggio di benvenuto personalizzato, sullo schermo nero verrà visualizzato solo questo messaggio. È possibile digitare manualmente “Press F2” per evitare confusione.
- Il messaggio personalizzato può essere utilizzato per nascondere le informazioni relative all’host ESXi sul display collegato all’host ESXi quando un utente non ha effettuato l’accesso.
esxcli system welcomemsg set -m="Welcome to NAKIVO! Press F2" - Verifica se il messaggio di benvenuto è già stato impostato:
esxcli system welcomemsg get
Comandi di rete ESXCLI
Il namespace network è uno dei più grandi namespace di ESXCLI. Esploriamo i comandi che possono essere utili per la diagnostica.
- Verifica lo stato delle connessioni di rete attive:
esxcli network ip connection list
- Visualizza l’elenco degli adattatori di rete installati:
esxcli network nic list
- Visualizza le informazioni sulle interfacce di rete:
esxcli network ip interface list - Visualizza le informazioni sugli indirizzi IP degli adattatori di rete presenti sul server:
esxcli network ip interface ipv4 get - Visualizza le informazioni di rete relative alle VM:
esxcli network vm list
- Visualizza le impostazioni di ricerca del dominio:
esxcli network ip dns search list - Visualizza i server DNS configurati nelle impostazioni di rete:
esxcli network ip dns server list - Elenca switch virtuali e i gruppi di porte:
esxcli network vswitch standard list - Mostra le statistiche relative all’interfaccia di rete
vmnic0:esxcli network nic stats get -n vmnic0 - Verifica lo stato del firewall e le impostazioni delle regole:
esxcli network firewall getesxcli network firewall ruleset listNOTA : Il criterio predefinito del firewall è quello di bloccare il traffico se non sono impostate regole contrarie.
- È possibile disabilitare temporaneamente il firewall su un host ESXi per la risoluzione dei problemi:
esxcli network firewall set --enabled false - Il firewall deve essere abilitato con il comando:
esxcli network firewall set --enabled true
Si raccomanda di mantenere abilitato il firewall ESXi per motivi di sicurezza.
Lo spazio dei nomi network include numerosi comandi. Nel post del blog di oggi, nella sezione Network vengono presi in considerazione solo quelli di base e più diffusi. È possibile configurare un gran numero di parametri di rete con ESXCLI, ma ciò richiederebbe una guida dettagliata che esula dall’ambito dell’articolo odierno.
Comandi ESXCLI relativi allo storage
Il namespace storage consente di verificare e modificare le impostazioni di storage.
- Verifica le informazioni sui volumi VMFS montati:
esxcli storage vmfs extent list - Visualizza le mappature dei file system VMFS sui dispositivi disco:
esxcli storage filesystem list - Elenca tutti i percorsi iSCSI presenti nel sistema:
esxcli storage core path list - Visualizza l’elenco delle condivisioni NFS montate:
esxcli storage nfs list
Come verificare lo stato SMART in ESXCLI
Lo S.M.A.R.T. è utile per la diagnostica dei dischi e per prevenire i guasti dei dischi. Puoi leggere le informazioni relative allo S.M.A.R.T. dati e, se si rileva un problema con il disco, è possibile decidere tempestivamente di sostituirlo.
- Per prima cosa, elencare tutti i dispositivi di storage e individuare il nome univoco del dispositivo (vedere la schermata qui sotto):
esxcli storage core device list - Quindi utilizzare il comando per ottenere i dati S.M.A.R.T. di quel dispositivo:
esxcli storage core device smart get -d naa.50026b7267020435dove
naa.50026b7267020435è il nome del dispositivo utilizzato in questo esempio.
Verifica l’elenco degli adattatori iSCSI
iSCSI è un protocollo ampiamente utilizzato per accedere allo storage condiviso a livello di blocco, ed esiste uno spazio dei nomi separato iscsi in ESXCLI per la gestione dello storage iSCSI.
- Visualizza l’elenco degli adattatori iSCSI disponibili:
esxcli iscsi adapter list - Rileva nuovamente ed esegui una nuova scansione degli adattatori iSCSI:
esxcli iscsi adapter discovery rediscover -A adapter_nameesxcli storage core adapter rescan -A adapter_name
Invece di -A adapter_name è possibile eseguire una nuova scansione di tutti gli adattatori utilizzando l’opzione --all .

Verifica l’elenco dei VIB del software ESXi
I pacchetti software destinati a ESXi vengono solitamente distribuiti come file VIB (vSphere Installation Bundle). Un file VIB è simile a un contenitore con pacchetti compressi che possono essere installati nel sistema, con un descrittore e un file di firma. A loro volta, i VIB sono solitamente distribuiti come file compressi in un archivio nel formato ZIP standard. Potrebbe essere necessario includere i VIB in un’immagine ESXi per utilizzare l’hardware appropriato o installare i VIB in un sistema esistente per applicare una patch di sicurezza.
- È possibile visualizzare l’elenco dei pacchetti VIB installati sull’host ESXi:
esxcli software vib list - È possibile installare un VIB con ESXCLI (l’host ESXi deve essere in modalità di manutenzione):
esxcli software vib install -d /vmfs/volumes/datastore1/patches/patch_name.zip
Gestione delle operazioni delle VM in ESXCLI
Il namespace vm può essere utilizzato per le operazioni sui processi delle VM in esecuzione.
- Verificare l’elenco delle VM in esecuzione e visualizzarne gli ID World:
esxcli vm process list
È possibile terminare la VM che non risponde tramite i comandi della shell ESXi. L’uso di ESXCLI, in questo caso, può essere utile quando non è possibile spegnere una macchina virtuale tramite l’interfaccia grafica (GUI), come quella di VMware vSphere Client, VMware Host Client o VMware Workstation.
- Spegnere la macchina virtuale utilizzando l’ID World visualizzato nell’output del comando
esxcli vm process list. Nell’esempio corrente, l’ID World della macchina virtuale in questione è 75498.esxcli vm process kill -w 75498 -t soft - Se il metodo di spegnimento “soft” non ha funzionato, valuta la possibilità di spegnere immediatamente la VM utilizzando il metodo “hard”.
esxcli vm process kill -w 75498 -t hard
Sono disponibili tre opzioni per il comando ` kill `:
soft– invia un segnale corretto al sistema operativo guest per spegnere correttamente la VMhard– spegne immediatamente la VMforce– ` ` la VM viene spenta in modo simile a come si spegne un computer quando si scollega il cavo di alimentazione. Utilizza questo tipo di spegnimento della VM solo se i due tipi precedenti non hanno avuto esito positivo.
Puoi anche guardare questo video per rilevare i comandi più utili negli ambienti VMware:
Altri comandi utili della shell ESXi
Oltre ai comandi ESXCLI, puoi utilizzare molti comandi della shell ESXi:
- Apri l’interfaccia DCUI di ESXi dalla console (i colori sono diversi quando ti connetti alla shell ESXi tramite SSH):
dcui
Premere
Ctrl+Cper tornare al prompt dei comandi. - Convertire un disco virtuale con provisioning thick in un disco virtuale con provisioning thin utilizzando
vmkfstools:vmkfstools -i /vmfs/volumes/vmfs_datastore/vm_name/thick_disk.vmdk -d thin /vmfs/volumes/vmfs_datastore/vm_name/new_thin_disk_name.vmdkTra i comandi della shell ESXi,
vmkfstoolsè un comando potente per eseguire operazioni di storage e gestire dispositivi di storage, volumi VMFS e dischi virtuali. Per ulteriori informazioni sul provisioning thick e thin e sul ridimensionamento dei dischi virtuali, consultare il post sul blog. - Aprire il task manager di ESXi:
esxtopDopo aver aperto il task manager con il comando
esxtop, è possibile passare da una scheda all’altra premendo i tasti appropriati:C - CPUI – interruptM – memoryN – networkD – disk adapterU – disk deviceV – disk VMP – power management - Trovare il file nella directory corrente:
find . -name filename.txt - Sostituire il carattere
.con il nome della directory in cui si desidera individuare un file e sostituirefilename.txtcon il nome del file. Ad esempio, se si desidera trovare un filediskname.vmdknella directory/vmfs/volumes/, eseguire il comando:find /vmfs/volumes/ -name diskname.vmdk - Aprire la console interattiva di VMware:
vsish - Visualizzare i driver vmkernel caricati:
vmkload_mod --list - Verificare le impostazioni della partizione di swap:
esxcli sched swap system get - È possibile elencare gli utenti utilizzando uno dei seguenti comandi:
esxcli system account listcat /etc/passwd or less/etc/passwd
- È possibile visualizzare tutti i comandi ESXi presenti nella directory di ubicazione
sbin:ls /usr/sbin
Creazione di un nuovo utente
Esistono almeno due metodi per creare un nuovo utente ESXi utilizzando i comandi della shell ESXi.
Il comando ESXi adduser
- Se si digita il comando
addusernella console ESXi, verrà visualizzato il messaggio:-sh: adduser: not found - Per eseguire questo comando, è necessario specificare il percorso completo del file binario busybox appropriato:
/usr/lib/vmware/busybox/bin/busybox adduserA questo punto è possibile visualizzare le opzioni di utilizzo di questo comando.
- Infine, eseguire il comando esatto per aggiungere un utente di sistema ESXi:
/usr/lib/vmware/busybox/bin/busybox adduser -s /bin/sh -G root -h / user1Dove:
-s /bin/shè una shell utilizzata dopo l’accesso dell’utente;-G root– il nome del gruppo di cui il nuovo utente è membro (il gruppo root);-h /è la directory home (la directory root) del nuovo utente;user1è il nome utente. - Immettere una nuova password e confermarla quando richiesto.

Creazione di un utente in ESXCLI
In alternativa, è possibile aggiungere un nuovo utente con un solo comando utilizzando ESXCLI:
esxcli system account add -d="NAKIVO user" -i="nakivo" -p="Password-Test321" -c="Password-Test321"
Dove:
-d indica la descrizione visualizzata
-p è la password impostata per il nuovo utente
-c è la conferma della password
Quale metodo scegliere per creare un nuovo utente nella riga di comando? Il comando singolo utilizzato nel secondo metodo può sembrare comodo, ma non lo è in termini di sicurezza. Se ricordate, subito dopo aver effettuato l’accesso alla shell di ESXi è stato visualizzato un messaggio di avvertenza:
Tutti i comandi eseguiti sulla shell di ESXi vengono registrati e potrebbero essere inclusi nei bundle di supporto. Non fornite le password direttamente nella riga di comando. La maggior parte degli strumenti può richiedere le credenziali o accettarle dall’input standard .
Se la sicurezza è una vostra preoccupazione, inserite i comandi senza includere le password come testo in chiaro all’interno dei comandi stessi. Se è necessaria una password, di solito viene richiesta e può essere inserita tramite l’input standard della console. Ad esempio, se si desidera creare un nuovo utente con ESXCLI, utilizzare un comando del tipo:
esxcli system account add -d="user2" -i="user2" -p -c
Una Password ESXi verrà richiesta separatamente e non verrà visualizzata nella console durante l’inserimento della password.

Conclusione
Esistono comandi della console VMware per gestire i componenti di sistema, la rete, lo storage, il software VIB e le VM. L’utilizzo dell’interfaccia a riga di comando in ESXi offre maggiori funzionalità oltre alle intuitive interfacce grafiche di VMware vSphere Client e VMware Host Client.
È possibile utilizzare i comandi della shell ESXi in locale e i comandi SSH di ESXi in remoto per visualizzare e configurare impostazioni nascoste o non disponibili nell’interfaccia grafica. Utilizzate l’elenco dei comandi ESXi fornito in questo post del blog per ottimizzare ESXi e scoprite le potenzialità aggiuntive offerte dall’utilizzo dell’interfaccia a riga di comando in VMware vSphere.
Scopri di più consultando l’articolo su PowerCLI, un altro tipo di interfaccia a riga di comando per la gestione di VMware vSphere da Windows PowerShell.