¿Cómo puedo saber si estoy corriendo en una máquina virtual de VMware (de Linux)?

StackOverflow https://stackoverflow.com/questions/540907

  •  22-08-2019
  •  | 
  •  

Pregunta

Tengo un servidor VMware ESX. Tengo Redhat VM que se ejecutan en ese servidor. Necesito una manera de probar programáticamente si estoy corriendo en una máquina virtual. Idealmente, me gustaría saber cómo hacer esto desde Perl.

¿Fue útil?

Solución

Otros consejos

Usted debe no al 100% depende de ningún método, ya que son características no documentadas / bugs - trabajan en algunos sistemas operativos de acogida y algunas soluciones de virtualización, pero no hay ninguna garantía de que van a seguir trabajando; de hecho, todo el punto de virtualización es ser tan indistinguibles a partir de metal real como sea posible. Con esto en mente, el píldora azul pastilla roja (que se menciona en la respuesta aceptada esta pregunta similar ) parece funcionar ... por ahora.

VMware tiene un par de SDK, incluyendo un SDK para Perl .

Creo que (dependiendo de la versión de ESX) se puede inspeccionar en la dirección MAC de la tarjeta de red. VM que se ejecutan en VMware NIC tendrá una cadena fabricante asignado a VMWare, sin la física MAC del NIC. (Estábamos tratando de falsificar la MAC a VM un servidor de licencias y versiones más recientes no vamos a dejar que lo hagas.) Además, esto no garantiza que no está ejecutando en un equipo físico con una tarjeta de red falsa para parecerse a VMWare, pero eso sería una cosa extraña que hacer en la mayoría de las circunstancias de todos modos.

Ejecutar el siguiente comando:

lspci | grep VMware

Se debería mostrar algo como esto:

  

00: 0f.0 VGA controlador compatible: VMware adaptador SVGA II

     

00: 11.0 puente PCI: PCI puente de VMware (rev 02)

     

00: 15.0 puente PCI: VMware PCI Express Root Port (rev 01)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top