perl - ¿Cómo puedo saber si estoy ejecutando una máquina virtual VMWARE(desde Linux)?
redhat esx (5)
Tengo un servidor VMWARE ESX. Tengo VM de Redhat ejecutándose en ese servidor. Necesito una forma de probar programáticamente si estoy ejecutando en una máquina virtual. Idealmente, me gustaría saber cómo hacer esto desde Perl.
Creo que (dependiendo de la versión de esx) puede inspeccionar en la dirección MAC de la NIC. Las VM que se ejecutan en VMWare NIC tendrán una cadena de fabricante asignada a VMWare, no el NIC MAC físico. (Estábamos intentando suplantar el MAC a VM como servidor de licencias y las versiones más nuevas no nos permitirán hacerlo). Además, esto no garantizará que no esté ejecutándose en una caja física con una NIC falsificada para que parezca VMWare, pero de todos modos eso sería algo extraño de hacer en la mayoría de las circunstancias.
VMWare tiene un par de SDK, incluido un SDK para Perl .
Ejecute el siguiente comando:
lspci | grep VMware
Debería mostrar algo como esto:
00: 0f.0 Controlador compatible con VGA: VMware SVGA II Adapter
00: 11.0 Puente PCI: Puente VMware PCI (rev 02)
00: 15.0 Puente PCI: VMware PCI Express Root Port (rev 01)
Consulte la respuesta a "¿ Detectar el sistema operativo virtualizado desde una aplicación? ".
No debe depender al 100% de ningún método, ya que son características / errores no documentados; funcionan en algunos sistemas operativos host y algunas soluciones de virtualización, pero no hay garantía de que continúen funcionando; de hecho, el objetivo de la virtualización es ser tan indistinguible del metal real como sea posible. Con esto en mente, la píldora azul de la píldora roja (que se menciona en la respuesta aceptada a esta pregunta similar ) parece funcionar ... por ahora.