Você pode usar o vSphere Client, a interface gráfica fornecida pela VMware, e o Cliente Web/HTML5 do VMware vSphere, que é baseado na web, para gerenciar hosts ESXi e seu ambiente VMware. Embora a maioria das configurações esteja disponível na GUI, às vezes você pode precisar obter informações ou alterar uma configuração que não é exibida na GUI.
Nesse caso, você precisa da interface de linha de comando (CLI) ou do “console”, que permite configurar todas as configurações, incluindo as ocultas. Além dos comandos tradicionais que são os mesmos no Linux e no ESXi, o ESXi tem seus próprios comandos ESXCLI.
Esta postagem no blog foi criada no formato de um catálogo que lista comandos ESXCLI úteis, que fazem parte dos comandos do shell ESXi.
Como abrir o console do ESXi Shell
Por padrão, o shell do ESXi está desativado para acesso local e remoto. Isso significa que você não pode executar comandos do shell do ESXi até habilitar o shell do ESXi ou o acesso SSH. A VMware impõe essa restrição por motivos de segurança.
Vamos ver os três principais métodos para habilitar a interface de linha de comando no ESXi.
Habilitando o acesso ao console usando a interface padrão do ESXi
Este método é usado quando você tem acesso físico a um host ESXi, incluindo o monitor e o teclado do host.
- No Interface de Usuário de Console Direto do ESXi (DCUI), vá para Opções de Troubleshooting, navegue até as opções Habilitar Shell do ESXi e Habilitar SSH, e pressione Enter para habilitar cada opção.
- Após ativar o shell ESXi, pressione Alt+F1 para abrir o console na máquina que está executando o ESXi. Você deve inserir seu nome de usuário e senha depois disso (as credenciais do usuário root podem ser usadas).
- Você pode executar comandos do shell ESXi.
- Se precisar voltar para o DCUI do ESXi, pressione Alt+F2. A opção Ativar SSH permite que você abra o console ESXi remotamente usando um cliente SSH.
Ativando o acesso ao console usando o VMware Host Client
- Abra um navegador da web e insira o endereço IP do seu host ESXi na barra de endereços, depois faça login.
- Vá para Host > Ações > Serviços e clique em Ativar Secure Shell (SSH) para habilitar o acesso SSH até o reinício do ESXi.
Da mesma forma, você pode habilitar o shell do console em um host ESXi local no menu Serviços. Vá para Gerenciar > Serviços. Clique com o botão direito no serviço TSM-SSH. Clique em Política > Iniciar e parar com o host para habilitar o acesso SSH mesmo após o reinício do ESXi.
- Agora você pode se conectar ao console do ESXi usando seu cliente SSH remotamente.
Habilitando o acesso ao console usando vCenter e VMware vSphere Client
Este método pode ser usado se o seu host ESXi for gerenciado pelo vCenter Server.
- Faça login no Cliente VMware HTML5 vSphere em um navegador da web.
- Vá para Hosts e Clusters e selecione seu host ESXi.
- Selecione a guia Configurar, abra Sistema > Serviços e clique em SSH na lista de serviços.
- Pressione Iniciar para iniciar o servidor SSH uma vez ou pressione Editar Política de Inicialização e selecione Iniciar e Parar com o host se desejar habilitar o servidor SSH por um período prolongado. Você também pode habilitar o shell do ESXi no menu Serviços.
Uma vez que o acesso SSH estiver habilitado, você pode se conectar a um host ESXi com um cliente SSH remotamente e executar comandos ESXCLI.
Conectando via SSH
Para se conectar ao console ESXi remotamente via SSH, no console Linux, execute as seguintes ações.
- Execute um comando como:
ssh 192.168.101.221
ou
onde 192.168.101.221 é o endereço IP do servidor ESXi usado neste exemplo.
- Você precisa inserir o nome de usuário e a senha do usuário ESXi (root pode ser usado como usuário administrativo padrão no ESXi).
Da mesma forma, você pode se conectar de um host ESXi para outro via SSH na linha de comando.
No Windows, você pode usar PuTTY:
- Abra o PuTTY
- Insira o endereço IP e porta do host ESXi.
- Pressione Abrir para se conectar ao host ESXi via SSH.
Conectar-se a um host ESXi via SSH e executar comandos ESXCLI remotamente é a abordagem mais comumente utilizada e segura.
Como Instalar ESXCLI no Linux
A maneira alternativa de executar comandos ESXCLI remotamente é instalando o ESXCLI no Linux. Python deve estar instalado para esse fim. Abaixo estão os principais passos para instalar o ESXCLI no Linux:
- Faça backup da sua máquina Linux antes de fazer alterações no sistema.
- Baixe o ESXCLI do site da VMware
- Extraia o conteúdo do arquivo esxcli-8.0.0-22179150.tgz baixado (execute como root):
tar zxf esxcli-8.0.0-22179150.tgz -C /opt/vmware
- Execute o instalador ESXCLI com o comando:
python setup.py install
- Tente se conectar a um host ESXi e executar um comando no ESXCLI remotamente:
esxcli --server endereço_IP_ESXI --help
Você receberá um erro porque o ESXi requer uma relação de confiança entre os hosts:
Erro de certificado. Impressão digital SHA-256 do 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 (não confiável)
- Para corrigir este problema, execute o comando especificando um nome de usuário, senha e a impressão digital exibida na mensagem de saída anterior:
esxcli --server 192.168.101.101 --username root --password 'sua_senha' --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, você pode tentar instalar um certificado em uma máquina Linux. Um certificado é armazenado em /etc/vmware/ssl/rui.crt em um host ESXi.
Visão geral dos Comandos ESXCLI
ESXCLI, parte do shell ESXi, é um framework de CLI para gerenciar uma infraestrutura virtual (componentes ESXi como hardware, rede, armazenamento, etc.) e controlar o próprio ESXi em um nível baixo. Tecnicamente, ESXCLI é um script Python (/bin/esxcli.py no ESXi). Todos os comandos ESXCLI devem ser executados no shell ESXi (console). Geralmente, esxcli
é o comando que tem uma ampla lista de subcomandos chamados namespaces e suas opções. O comando esxcli
está presente logo após a instalação do ESXi, juntamente com outros comandos de shell ESXi.
Você pode localizar esxcli e explorar a natureza do ESXCLI após executar os seguintes comandos:
which esxcli
ls -l /sbin/esxcli
Como você pode garantir verificando a saída do console, ESXCLI é um script escrito em Python que está localizado no diretório /sbin/. Se você quiser ver o conteúdo do script, você pode usar o editor de texto integrado vi.
Basicamente, a sintaxe do ESXCLI é a seguinte:
esxcli [opções] {namespace}+ {cmd} [opções do cmd]
Assim, o ESXCLI consiste em ramos que são as categorias principais (namespaces) dos comandos ESXCLI. Observe que os comandos esxcli são sensíveis a maiúsculas e minúsculas, da mesma forma que outros comandos de console usados no ESXi. A lista completa de todos os namespaces e comandos ESXCLI disponíveis é exibida após executar o comando:
esxcli esxcli lista de comandos
A lista de comandos ESXCLI disponíveis depende da versão do ESXi. Novos comandos podem ser adicionados.
Portanto, a lista dos principais namespaces ESXCLI para o ESXi 8.0 é a seguinte:
- dispositivo – comandos do gerenciador de dispositivos
- esxcli – comandos relacionados ao próprio ESXCLI
- fcoe – comandos de Fibre Channel over Ethernet
- gráficos – comandos de gráficos da VMware
- hardware – comandos para verificar propriedades de hardware e configurar hardware
- iscsi – comandos iSCSI da VMware
- rede – este namespace inclui uma ampla gama de comandos para gerenciar configurações gerais de rede do host (como endereço IP, configurações de DNS de um host ESXi, firewall) e componentes de rede virtual, como vSwitch, grupos de portas, etc.
- nvme – gerenciando extensões para o driver NVMe da VMware
- rdma – comandos para gerenciar a pilha de protocolo de acesso direto à memória remota
- sched – comandos usados para configurar agendamento e propriedades do sistema VMkernel
- software – gerenciando imagens de software ESXi e pacotes para ESXi
- armazenamento – comandos usados para gerenciar armazenamento
- sistema – comandos para configurar propriedades do sistema VMkernel, o núcleo do sistema e serviços do sistema
- vm – alguns comandos que podem ser usados para controlar operações de máquinas virtuais
- vsan – comandos VMware vSAN
Os principais comandos aparecem como verbos indicando a mesma ação:
- lista – mostra a lista de objetos disponíveis para o namespace definido (por exemplo,
esxcli hardware bootdevice list
– lista dispositivos de inicialização disponíveis) - obter – obter o valor da configuração ou propriedade definida (por exemplo,
esxcli hardware clock get
– verificar a hora configurada) - definir – definir manualmente o parâmetro necessário (por exemplo,
esxcli hardware clock set -y 2024 -s 00
– definir o ano para 2024 e definir os segundos para 00) - carregar/descarregar – carregar/descarregar a configuração do sistema (
esxcli network firewall load
– carregar o módulo de firewall e as configurações do firewall armazenadas no arquivo de configuração)
Se você não conseguir lembrar de um comando ESXCLI específico relacionado ao namespace apropriado, pode inserir o comando e ver uma dica na saída do console.
Por exemplo, digite:
esxcli network
para ver todos os comandos disponíveis para o namespace rede
e então digite:
esxcli network vm
para verificar os comandos para o namespace vm.
O arquivo de log do ESXCLI está localizado em /var/log/esxcli.log
Os dados são escritos neste arquivo se um comando ESXCLI não foi executado com êxito. Se um comando ESXCLI for executado com sucesso, nada será escrito neste arquivo de log.
Comandos ESXCLI Úteis
Agora que você está familiarizado com o princípio básico de funcionamento dos comandos ESXCLI, vamos analisar exemplos específicos de comandos úteis que podem ser usados no VMware vSphere. A lista de comandos ESXCLI considerados neste artigo está dividida em categorias equivalentes aos nomes dos espaços de nomes.
Comandos para verificar detalhes do hardware no ESXi
Ao usar o espaço de nomes hardware, você pode visualizar todas as informações sobre os dispositivos instalados.
- Para visualizar os dispositivos PCI instalados, execute o seguinte comando ESXCLI:
esxcli hardware pci list | more
- Verifique a quantidade de memória instalada no servidor ESXi:
esxcli hardware memory get
- Visualize as informações detalhadas sobre os processadores instalados:
esxcli hardware cpu list
Comandos do sistema ESXCLI
Nesta seção, você pode ver os comandos do espaço de nomes ESXCLI sistema.
- Verifique a versão precisa do ESXi e o número da compilação, incluindo o número de atualizações e patches instalados:
esxcli system version get
- Verifique o nome do host de um servidor ESXi:
esxcli system hostname get
- Verifique o horário de instalação do ESXi:
esxcli system stats installtime get
- Verifique a configuração SNMP:
esxcli system snmp get
- Entre no modo de manutenção do host ESXi:
esxcli system maintenanceMode set --enable yes
- Saia do modo de manutenção:
esxcli system maintenanceMode set --enable no
Depois de colocar um host ESXi no modo de manutenção, você pode desligar ou reiniciar o host.
- Desligue um host ESXi:
esxcli system shutdown poweroff
- O comando para reiniciar o host é semelhante:
esxcli system shutdown reboot
-
esxcli system shutdown reboot -d 60 -r "Instalando patches"
Neste exemplo, o atraso é de 60 segundos.
Outro comando é definir a mensagem de boas-vindas personalizada em vez de uma tela de fundo padrão com um menu principal inativo sombreado onde a dica “<F2> Personalizar Sistema/Ver Logs <F12> Desligar/Reiniciar” e o endereço IP para gerenciar o host são exibidos. Note que após definir uma mensagem de boas-vindas personalizada, você verá apenas essa mensagem definida na tela preta. Você pode digitar “Pressione F2” manualmente para evitar confusão.
- A mensagem personalizada pode ser usada para ocultar informações sobre seu host ESXi na tela conectada ao host ESXi quando um usuário não está logado.
esxcli system welcomemsg set -m="Bem-vindo ao NAKIVO! Pressione F2"
- Verifique se a mensagem de boas-vindas já está definida:
esxcli system welcomemsg get
Comandos de rede ESXCLI
O namespace de rede é um dos maiores namespaces do ESXCLI. Vamos explorar os comandos que podem ser úteis para diagnósticos.
- Verifique o status das conexões de rede ativas:
esxcli network ip connection list
- Visualize a lista de adaptadores de rede instalados:
esxcli network nic list
- Exiba as informações sobre as interfaces de rede:
esxcli network ip interface list
- Exiba as informações sobre os endereços IP das interfaces de rede presentes no servidor:
esxcli network ip interface ipv4 get
- Exibir informações de rede para VMs:
esxcli network vm list
- Verificar as configurações de pesquisa de domínio:
esxcli network ip dns search list
- Exibir os servidores DNS definidos nas configurações de rede:
esxcli network ip dns server list
- Listar switches virtuais e grupos de portas:
esxcli network vswitch standard list
- Mostrar estatísticas para a interface de rede vmnic0:
esxcli network nic stats get -n vmnic0
- Verificar o status do firewall e as configurações de regras:
esxcli network firewall get
esxcli network firewall ruleset list
ATENÇÃO: A política de firewall padrão é descartar o tráfego se as regras opostas não estiverem definidas.
- Você pode desabilitar temporariamente o firewall em um host ESXi para solução de problemas:
esxcli network firewall set --enabled false
- O firewall deve ser habilitado com o comando:
esxcli network firewall set --enabled true
Recomenda-se que você tenha o firewall ESXi habilitado por motivos de segurança.
O namespace network inclui muitos comandos. Apenas os básicos e os mais populares deles são considerados na seção Network desta postagem de blog de hoje. É possível configurar um grande número de parâmetros de rede com o ESXCLI, mas isso exigiria um longo passo a passo que está fora do escopo deste artigo de hoje.
Comandos de armazenamento ESXCLI
O namespace storage permite verificar e editar configurações de armazenamento.
- Verifique as informações sobre volumes VMFS montados:
esxcli storage vmfs extent list
- Visualize mapeamentos de sistemas de arquivos VMFS para dispositivos de disco:
esxcli storage filesystem list
- Lista todas as rotas iSCSI no sistema:
esxcli storage core path list
- Exibir a lista de compartilhamentos NFS montados:
esxcli storage nfs list
Como verificar o SMART no ESXCLI
S.M.A.R.T. is useful for disk diagnostics and for preventing disk failure. You can read the S.M.A.R.T. data and, if you discover that something is wrong with your disk, you can make a timely decision to replace the disk.
- Primeiro, liste todos os dispositivos de armazenamento e localize o nome do dispositivo exclusivo (veja a captura de tela abaixo):
esxcli storage core device list
- Em seguida, use o comando para obter os dados SMART desse dispositivo de disco:
esxcli storage core device smart get -d naa.50026b7267020435
onde naa.50026b7267020435 é o nome do dispositivo usado neste exemplo.
Verificar lista de adaptadores iSCSI
iSCSI é um protocolo amplamente utilizado para acessar armazenamento compartilhado em nível de bloco, e há um namespace iscsi separado no ESXCLI para gerenciar armazenamento iSCSI.
- Mostrar a lista de adaptadores iSCSI disponíveis:
esxcli iscsi adapter list
- Redescobrir e rescanear adaptadores iSCSI:
esxcli iscsi adapter discovery rediscover -A nome_do_adaptador
esxcli storage core adapter rescan -A nome_do_adaptador
Em vez de -A nome_do_adaptador
você pode rescanear todos os adaptadores usando a opção --all
.
Verificar a lista de VIBs do ESXi
Pacotes de software destinados ao ESXi são geralmente distribuídos como arquivos VIB (vSphere installation bundle). Um arquivo VIB é semelhante a um contêiner com pacotes compactados que podem ser instalados no sistema, com um arquivo de descrição e um arquivo de assinatura. Por sua vez, os VIBs são geralmente distribuídos como arquivos empacotados em um arquivo de arquivamento no formato ZIP padrão. Você pode precisar incluir VIBs em uma imagem do ESXi para usar o hardware apropriado ou instalar VIBs em um sistema existente para aplicar uma correção de segurança.
- Você pode visualizar a lista de pacotes VIB instalados em seu host ESXi:
esxcli software vib list
- Você pode instalar um VIB com o ESXCLI (o host ESXi deve estar em modo de manutenção):
esxcli software vib install -d /vmfs/volumes/datastore1/patches/nome_da_patch.zip
Gerenciando operações de VM no ESXCLI
O namespace vm pode ser usado para operações em processos de máquinas virtuais em execução.
- Verifique a lista de VMs em execução e exiba seus IDs de mundo:
esxcli vm process list
Você pode encerrar a máquina virtual não responsiva com comandos do shell ESXi. Usar o ESXCLI, nesse caso, pode ser útil quando uma VM não pode ser desligada usando a GUI, como a GUI do Cliente VMware vSphere, Cliente Host VMware ou VMware Workstation.
- Desligue a VM usando o ID de mundo exibido na saída do comando
esxcli vm process list
. No exemplo atual, o ID de mundo da VM necessária é 75498.esxcli vm process kill -w 75498 -t soft
- Se o tipo de comando soft não foi útil, considere realizar um desligamento imediato da VM usando o método hard.
esxcli vm process kill -w 75498 -t hard
Há três opções de comando disponíveis para o comando kill:
- soft – um sinal correto é enviado no sistema operacional convidado para desligar uma VM corretamente
- hard – uma VM é desligada imediatamente
- Forçar – A VM é desligada de forma semelhante ao desligamento de um computador ao desplugá-lo do cabo de energia. Use este tipo de desligamento da VM apenas se os dois tipos anteriores não forem bem-sucedidos.
Outros Comandos Úteis do ESXi Shell
Além dos comandos ESXCLI, você pode usar muitos comandos do shell do ESXi:
- Abra o DCUI do ESXi a partir do console (as cores são diferentes quando você se conecta ao shell do ESXi via SSH):
dcui
Pressione Ctrl+C para voltar ao prompt de comando.
- Converta um disco virtual de provisionamento espesso em um disco virtual de provisionamento fino usando 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 os comandos do shell do ESXi, vmkfstools é um comando poderoso para realizar operações de armazenamento, bem como gerenciar dispositivos de armazenamento, volumes VMFS e discos virtuais. Saiba mais sobre o provisionamento espesso e fino, bem como a redução do disco virtual no post do blog.
- Abra o gerenciador de tarefas do ESXi:
esxtop
Após abrir o gerenciador de tarefas com o comando
esxtop
, você pode alternar entre as guias pressionando as teclas apropriadas:C – CPU
I – interrupção
M – memória
N – rede
D – adaptador de disco
U – dispositivo de disco
V – VM de disco
P – gerenciamento de energia
- Encontre o arquivo no diretório atual:
find . -name filename.txt
- Substitua o caractere . pelo nome do diretório no qual você gostaria de localizar um arquivo e substitua
filename.txt
pelo nome do seu arquivo. Por exemplo, se você deseja encontrar um arquivo diskname.vmdk no diretório /vmfs/volumes/, execute o comando:find /vmfs/volumes/ -name diskname.vmdk
- Abra o console interativo do VMware:
vsish
- Mostrar os drivers vmkernel carregados:
vmkload_mod --list
- Verificar as configurações da partição de swap:
esxcli sched swap system get
- Você pode listar usuários usando um dos seguintes comandos:
esxcli system account list
cat /etc/passwd or less/etc/passwd
- Você pode ver todos os comandos do ESXi localizados no diretório sbin:
ls /usr/sbin
Criando um novo usuário
Existem pelo menos dois métodos para criar um novo usuário ESXi usando comandos de shell ESXi.
O comando ESXi adduser
- Se você digitar o comando
adduser
na console ESXi, você receberá a mensagem:-sh: adduser: not found
- Você deve definir o caminho completo para o binário apropriado do busybox para executar este comando:
/usr/lib/vmware/busybox/bin/busybox adduser
Agora você pode ver as opções de uso deste comando.
- Por fim, execute o comando exato para adicionar um usuário do sistema ESXi:
/usr/lib/vmware/busybox/bin/busybox adduser -s /bin/sh -G root -h / user1
Onde:
-s /bin/sh é um shell usado após o login do usuário;
-G root – o nome do grupo do qual o novo usuário é membro (o grupo root);
-h / é o diretório home (o diretório raiz) do novo usuário;
user1 é o nome do usuário.
- Digite uma nova senha e confirme a senha quando solicitado.
Criar um usuário no ESXCLI
Como alternativa, você pode adicionar um novo usuário com apenas um comando usando o ESXCLI:
esxcli system account add -d="NAKIVO user" -i="nakivo" -p="Password-Test321" -c="Password-Test321"
Onde:
-d significa a descrição exibida
-p é a senha definida para o novo usuário
-c é a confirmação da senha
Qual método escolher para criar um novo usuário no prompt de comando? O comando único usado no segundo método pode parecer conveniente, mas não em termos de segurança. Se você se lembra, havia uma mensagem de aviso exibida logo após a entrada no shell ESXi:
Todos os comandos executados no shell ESXi são registrados e podem ser incluídos nos pacotes de suporte. Não forneça senhas diretamente na linha de comando. A maioria das ferramentas pode solicitar segredos ou aceitá-los da entrada padrão.
Se a segurança é uma preocupação para você, insira comandos sem incluir senhas como texto simples nos comandos. Se uma senha for necessária, geralmente será solicitada e poderá ser inserida no console de entrada padrão. Por exemplo, se você deseja criar um novo usuário com o ESXCLI, use um comando como:
esxcli system account add -d="user2" -i="user2" -p -c
Uma senha do ESXi será solicitada separadamente e não será exibida no console ao inserir a senha.
Conclusão
Existem comandos de console do VMware para gerenciar componentes do sistema, rede, armazenamento, software VIB e máquinas virtuais. O uso da interface de linha de comando no ESXi oferece mais poder além das agradáveis interfaces gráficas do VMware vSphere Client e do VMware Host Client.
Você pode usar comandos do shell do ESXi localmente e comandos do SSH do ESXi remotamente para visualizar e configurar configurações que estão ocultas ou indisponíveis na GUI. Use a lista de comandos do ESXi fornecida neste post de blog para ajustar finamente o ESXi e experimente o poder extra de usar a interface de linha de comando no VMware vSphere.
Você pode aprender mais lendo sobre PowerCLI, outro tipo de interface de linha de comando para gerenciar o VMware vSphere a partir do Windows PowerShell.
Source:
https://www.nakivo.com/blog/most-useful-esxcli-esxi-shell-commands-vmware-environment/