Pergunta

Eu tenho um servidor VMware ESX. Eu tenho Redhat VMs em execução no servidor. Eu preciso de uma maneira de programaticamente testar se eu estou correndo em uma máquina virtual. Idealmente, eu gostaria de saber como fazer isso a partir de Perl.

Foi útil?

Solução

Veja a resposta à pergunta " Detectar OS virtualizada de um aplicativo? " .

Outras dicas

Você deve não 100% depende de qualquer método, como eles são recursos não documentados / erros - eles trabalham em alguns sistemas operacionais de host e algumas soluções de virtualização, mas não há garantia de que eles vão continuar a trabalhar; na verdade, todo o ponto de virtualização é ser tão indistinguível de metal real possível. Com isto em mente, a comprimido azul pílula vermelha (que é mencionado na resposta aceita esta pergunta semelhante ) parece funcionar ... por agora.

VMWare tem um par de SDK do, incluindo um SDK para Perl .

Eu acho que (dependendo da versão do ESX) você pode inspecionar no endereço MAC do NIC. VMs em execução no VMWare NIC terá uma corda fabricante atribuído a VMWare, não o físico NIC MAC. (Nós estávamos tentando falsificar o MAC para VM um servidor de licenças e versões mais recentes não vai deixar você fazer isso.) Além disso, isso não vai garantir que você não está sendo executado em uma caixa física com uma NIC falsificado para olhar como VMWare, mas isso seria uma coisa estranha para fazer na maioria das circunstâncias de qualquer maneira.

Execute o seguinte comando:

lspci | grep VMware

Ele deve mostrar algo como isto:

00: 0f.0 VGA controlador compatível: VMware SVGA II Adapter

00: 11,0 ponte PCI: ponte VMware PCI (rev 02)

00: 15.0 ponte PCI: VMware PCI Express Porto Root (rev 01)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top