Determine o tipo de VMWare na VM

Determine o tipo de VMWare na VM

É possível determinar o tipo de VMWare (ESXi, Workstation, Fusion, ...) de dentro da própria VM (ou seja, sistema operacional convidado), desde que a VM convidada seja uma máquina Linux?

Eu tentei várias coisas, como grep for hypervisorin /proc/cpuinfo, using lscpu, etc. mas tudo que encontrei foi "vmware", sem detalhes.

Não tenho privilégios de root na máquina, se isso mudar as coisas, embora esteja interessado em soluções possíveis apenas com root, que serão úteis para algumas coisas. Além disso, estou mais interessado em soluções Linux, mas, novamente, soluções somente para Windows podem ser úteis.

A razão pela qual estou perguntando é para poder descobrir o desempenho. ESXi é a) geralmente implantado em "hardware real"™ e b) não possui sobrecarga adicional do sistema operacional. Veresta questão de falha no servidorpara mais detalhes, especialmenteesta resposta.

Responder1

Você pode determinar a versão a partir das strings de versão do BIOS na saída dmidecode. Encontrei um exemplo de como fazer isso emhttps://fritshoogland.wordpress.com/2013/01/24/determine-vmware-esx-version-from-linux-as-guest-os/que remonta a 2013, então provavelmente estão faltando algumas versões mais recentes:

case $( dmidecode | grep -A4 "BIOS Information" | grep Address | awk '{ print $2 }' ) in
"0xE8480" ) echo "ESX 2.5" ;;
"0xE7C70" ) echo "ESX 3.0" ;;
"0xE7910" ) echo "ESX 3.5" ;;
"0xE7910" ) echo "ESX 4"   ;;
"0xEA550" ) echo "ESX 4U1" ;;
"0xEA2E0" ) echo "ESX 4.1" ;;
"0xE72C0" ) echo "ESXi 5"   ;;
"0xEA0C0" ) echo "ESXi 5.1" ;;
"0xEA050" ) echo "ESXi 5.5" ;;
* ) echo "Unknown version: "
dmidecode | grep -A4 "BIOS Information" 
;;
esac

Nossa equipe de operações não sabia me dizer qual versão do ESX estávamos executando há alguns anos (ugh!!), mas eu precisava saber porque estávamos nos preparando para testar um novo produto que exigia uma versão específica do hipervisor. Isso funcionou como um campeão para mim.

Se você precisar fazer isso como uma conta não root, use sudo. Use 'visudo' para acessar o arquivo sudoers e adicione uma linha semelhante à abaixo perto do final do arquivo:

nome de usuário ALL=(ALL:ALL) NOPASSWD:/usr/sbin/dmidecode

Isso permitirá que 'nome de usuário' acesse dmidecode sem qualquer autenticação especial, basta executar "sudo dmidecode" em vez de "dmidecode".

informação relacionada