Os Comandos ESXCLI Mais Úteis para o seu Ambiente VMware

Você pode utilizar o vSphere Client, a interface gráfica fornecida pela VMware, ou o vSphere Web/HTML5 Client, 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 está exibida na GUI.

Nesse caso, você precisará da interface de linha de comando (CLI) ou do “console”, o que lhe permitirá 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.

Este post do blog foi criado no formato de um catálogo que lista comandos ESXCLI úteis, que fazem parte dos comandos shell ESXi.

Como Abrir o Console do Shell ESXi

Por padrão, o shell ESXi está desabilitado para acesso local e remoto. Isso significa que você não pode executar comandos shell ESXi até habilitar o shell ESXi ou acesso SSH. A VMware impõe essa restrição por motivos de segurança.

Vamos examinar os três principais métodos para habilitar a interface de linha de comando no ESXi.

Habilitando o acesso ao console usando a interface ESXi padrão

  1. Este método é usado quando você tem acesso físico a um host ESXi, incluindo o monitor e o teclado do host.Na ESXi Direct Console User Interface (DCUI), acesse Opções de Solução de Problemas, navegue até as strings Habilitar Shell ESXi e Habilitar SSH, e pressione Enter para habilitar cada opção.
  2. Após habilitar o shell ESXi, pressione Alt+F1 para abrir o console na máquina que executa o ESXi. Você deve inserir seu login e senha depois disso (as credenciais do usuário root podem ser usadas).
  3. Você pode executar comandos de shell ESXi.
  4. Se precisar voltar ao DCUI do ESXi, pressione Alt+F2. A opção Habilitar SSH permite abrir o console ESXi remotamente usando um cliente SSH.

Habilitando acesso ao console usando o Cliente Host VMware

  1. Abra um navegador da web e insira o endereço IP do seu host ESXi na barra de endereços, em seguida, faça login.
  2. Vá para Host > Ações > Serviços e clique em Habilitar Secure Shell (SSH) para permitir o acesso SSH até o próximo 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 próximo reinício do ESXi.

  3. Agora você pode se conectar ao console do ESXi usando seu cliente SSH remotamente.

Habilitando o acesso ao console usando o vCenter e o VMware vSphere Client

Este método pode ser usado se o seu host ESXi for gerenciado pelo vCenter Server.

  1. Faça login no Cliente VMware HTML5 vSphere em um navegador da web.
  2. Vá para Hosts e Clusters e selecione seu host ESXi.
  3. Selecione a guia Configurar, abra Sistema > Serviços, e clique em SSH na lista de serviços.
  4. Clique em Iniciar para iniciar o servidor SSH uma vez ou clique em 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 ESXi no menu Serviços.

Depois de habilitar o acesso SSH, você pode se conectar a um host ESXi remotamente com um cliente SSH e executar comandos ESXCLI.

Conectando via SSH

Para se conectar ao console ESXi remotamente via SSH, no console Linux, execute as seguintes ações.

  1. Execute um comando como:

    ssh 192.168.101.221

    ou

    ssh [email protected]

    onde 192.168.101.221 é o endereço IP do servidor ESXi usado neste exemplo.

  2. 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:

  1. Abra o PuTTY
  2. Insira o endereço IP e a porta do host ESXi.
  3. Clique em 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 comum e segura.

Como instalar o ESXCLI no Linux

A maneira alternativa de executar comandos ESXCLI remotamente é instalando o ESXCLI no Linux. O Python deve estar instalado para esse fim. Abaixo estão os principais passos para instalar o ESXCLI no Linux:

  1. Faça backup da sua máquina Linux antes de fazer alterações no sistema.
  2. Baixe o ESXCLI do site da VMware
  3. 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

  4. Execute o instalador ESXCLI com o comando:

    python setup.py install

  5. Tente conectar-se 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 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)

  6. 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 linha de comando para gerenciar uma infraestrutura virtual (componentes ESXi como hardware, rede, armazenamento, etc.) e controlar o ESXi em si em um nível baixo. Tecnicamente, o ESXCLI é um script Python (/bin/esxcli.py no ESXi). Todos os comandos do ESXCLI devem ser executados no shell do ESXi (console). Geralmente, esxcli é o comando que possui 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 do ESXi.

Você pode localizar o esxcli e explorar a natureza do ESXCLI após executar os seguintes comandos:

which esxcli

ls -l /sbin/esxcli

Como você pode garantir ao verificar a saída do console, o ESXCLI é um script escrito em Python que está localizado no diretório /sbin/. Se você deseja ver o conteúdo do script, 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 diferenciam maiúsculas de 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 a execução do 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 do 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 sobre Ethernet
  • gráficos – comandos de gráficos VMware
  • hardware – comandos para verificar propriedades de hardware e configurar hardware
  • iscsi – comandos iSCSI da VMware
  • rede – esse espaço de nomes inclui uma ampla gama de comandos para gerenciar configurações de rede de host geral (como o endereço IP, configurações de DNS de um host ESXi, firewall) e componentes de rede virtual, como vSwitch, grupos de porta, etc.
  • nvme – gerenciando extensões para o driver NVMe da VMware
  • rdma – comandos para gerenciar a pilha de protocolo de acesso à memória direta remota
  • agendamento – comandos usados para configurar agendamento e propriedades do sistema VMkernel
  • software – gerenciando imagens e pacotes de software ESXi 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áquina virtual
  • 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 lista – lista dispositivos de inicialização disponíveis)
  • obter – obter o valor da configuração ou propriedade definida (por exemplo, esxcli hardware clock obter – verificar o tempo definido)
  • definir – definir manualmente o parâmetro necessário (por exemplo, esxcli hardware clock definir -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 carregar – carregar o módulo de firewall e configurações de firewall armazenadas no arquivo de configuração)

Se não se lembrar de um comando ESXCLI específico relacionado ao namespace apropriado, você 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 ESXCLI está localizado em /var/log/esxcli.log

Os dados são gravados neste arquivo se um comando ESXCLI não for executado com sucesso. Se um comando ESXCLI for executado com sucesso, nada será gravado neste arquivo de log.

Comandos ESXCLI Úteis

Agora que você está familiarizado com o princípio básico de funcionamento dos comandos ESXCLI, vamos ver 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 de hardware no ESXi

Ao usar o namespace hardware, você pode visualizar todas as informações sobre dispositivos instalados.

  • Para visualizar 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 namespace ESXCLI system.

  • 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

  • Coloque o host ESXi no modo de manutenção:

    esxcli system maintenanceMode set --enable yes

  • Saia do modo de manutenção:

    esxcli system maintenanceMode set --enable no

Após 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

  • Você também pode definir um atraso e escrever um motivo para reinicializar o host a ser salvo nos logs do sistema:

    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. Observe que após definir uma mensagem de boas-vindas personalizada, você verá apenas esta 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 no display conectado 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

  • Veja a lista de adaptadores de rede instalados:

    esxcli network nic list

  • Exiba as informações sobre 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

  • Visualizar as configurações de pesquisa de domínio:

    esxcli network ip dns search list

  • Visualizar 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 regra:

    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 solucionar 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 rede inclui muitos comandos. Apenas os básicos e os mais populares deles são considerados na seção Rede do post de blog de hoje. É possível configurar um grande número de parâmetros de rede com o ESXCLI, mas isso exigiria um passo a passo longo que está fora do escopo do artigo de hoje.

Comandos de armazenamento ESXCLI

O namespace armazenamento permite verificar e editar configurações de armazenamento.

  • Verifique 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

  • Listar 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.

  1. 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

  2. Em seguida, use o comando para obter os dados S.M.A.R.T. desse dispositivo de disco:

    esxcli storage core device smart get -d naa.50026b7267020435

    onde naa.50026b7267020435 é o nome do dispositivo usado neste exemplo.

Verificar a lista de adaptadores iSCSI

iSCSI é um protocolo amplamente utilizado para acessar armazenamento compartilhado em um nível de bloco, e há um namespace iscsi separado no ESXCLI para gerenciar o 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 geralmente são 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 geralmente são distribuídos como arquivos compactados 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

Gerenciamento de 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 de shell do ESXi. Usar o ESXCLI, neste 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 corretamente uma VM
  • hard – uma VM é desligada imediatamente
  • Forçar A VM é desligada de maneira semelhante a como um computador é desligado quando o cabo de energia é desconectado. Use este tipo de desligamento da VM apenas se os dois tipos anteriores não forem bem-sucedidos.

Outros Comandos Úteis do Shell ESXi

Além dos comandos ESXCLI, você pode usar muitos comandos do shell ESXi:

  • Abrir o DCUI do ESXi a partir do console (as cores são diferentes quando você se conecta ao shell ESXi via SSH):

    dcui

    Pressione Ctrl+C para voltar ao prompt de comando.

  • Converter um disco virtual provisionado de forma espessa em um disco virtual provisionado de forma fina usando vmkfstools:

    vmkfstools -i /vmfs/volumes/vmfs_datastore/vm_name/thick_disk.vmdk -d thin /vmfs/volumes/vmfs_datastore/vm_name/nome_novo_disco_fino.vmdk

    Entre os comandos do shell ESXi, vmkfstools é um comando poderoso para realizar operações de armazenamento, bem como gerenciar dispositivos de armazenamento, volumes VMFS e discos virtuais. Leia mais sobre provisionamento espesso e fino, bem como encolhimento de disco virtual no post do blog.

  • Abra o gerenciador de tarefas do ESXi:

    esxtop

    Depois de 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 na pasta atual:

    find . -name filename.txt

  • Substitua o caractere . pelo nome do diretório em que deseja 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 do ESXi usando comandos do shell do ESXi.

O comando ESXi adduser

  • Se você digitar o comando adduser na console do 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 fazer login no shell do ESXi:

Todos os comandos executados no shell do 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ê, digite comandos sem incluir senhas como texto simples nos comandos. Se uma senha for necessária, geralmente é solicitada e pode 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 o ESXi com precisão e experimente o poder extra do uso da 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/