Una pregunta interesante He iniciado sesión en un host Linux (probablemente SuSE). ¿Hay alguna forma en que pueda decir programáticamente que soy un host VM o no?
También suponga que las vmtools no están instaladas.
Una pregunta interesante He iniciado sesión en un host Linux (probablemente SuSE). ¿Hay alguna forma en que pueda decir programáticamente que soy un host VM o no?
También suponga que las vmtools no están instaladas.
Respuestas:
Utilice herramientas estándar de Linux para inspeccionar el hardware del sistema.
cat /proc/scsi/scsi
o
ethtool -i eth0
o
dmidecode | grep -i vmware
Si la salida de estos comandos muestra hardware con un nombre de fabricante de "VMWare", está en una VM VMWare. Aquí se proporcionan varios comandos porque las configuraciones y herramientas del sistema son diferentes.
cat /proc/scsi/scsi
es bueno porque parece estar disponible en todas partes y no requiere instalar un nuevo software o ejecutarse con derechos privilegiados.
/proc/scsi/scsi
en mi caja de Debian 7 ...
man virt-what
el script heurístico creado para este propósito de detección (para los sistemas RedHat / Fedora) y las advertencias involucradas.
facter virtual
xenu
indica que es una VM. Si devuelve "físico", entonces lo contrario es cierto (no una VM), por ejemplo:
facter virtual
Physical
Es posible que pueda obtener una idea mirando a su alrededor /sys
. Por ejemplo /sys/class/dmi/id/sys_vendor
tiene un valor de VMware, Inc.
.
Si está instalado, puede usar lshw . El comando lshw -class system
devuelve esto en mi sistema:
server1
description: Computer
product: VMware Virtual Platform
vendor: VMware, Inc.
version: None
serial: VMware-...
width: 64 bits
capabilities: smbios-2.4 dmi-2.4 vsyscall64 vsyscall32
Algunos entornos virtuales nombran algunos de sus dispositivos virtuales con nombres que son un poco reveladores, por ejemplo, VirtualBox presenta una tarjeta gráfica que se llama a sí misma "Adaptador de pantalla VirtualBox". Pero buscar esos vínculos lo vincula a una VM en particular y posiblemente a una gama limitada de versiones.
Es posible que su código vea qué tipo de virtualización podría configurar. Si eso falla por completo, es posible que esté en una máquina virtual. Pero usted podría estar fácilmente en una caja que no tiene hardware compatible con VM.
Para Linux, escriba dmesg |grep DMI
:
[root @ myhost ~] # dmesg | grep DMI DMI 2.3 presente. DMI: Máquina virtual de Microsoft Corporation / Máquina virtual, BIOS 090006 23/05/2012 [root @ myhost ~] # dmesg | grep -i virtual DMI: Máquina virtual de Microsoft Corporation / Máquina virtual, BIOS 090006 23/05/2012 Arranque del kernel paravirtualizado en hardware desnudo input: emulación del botón del mouse de Macintosh como / devices / virtual / input / input1 scsi 0: 0: 0: 0: Acceso directo Msft Virtual Disk 1.0 PQ: 0 ANSI: 4 entrada: mouse compatible con HID de Microsoft Vmbus como / devices / virtual / input / input4
[root @ backdev1 ~] # dmesg | grep DMI DMI 2.5 presente. DMI: IBM System x3650 M3 - [7945AC1] - / 90Y4784, BIOS - [D6E153AUS-1.12] - 30/06/2011
Hay mucho código para detectar si estás en una máquina virtual o no. Comience con la píldora roja y busque desde allí. Este artículo en Offensive Computing también es una buena lectura.
Eso es si ninguno de los fáciles anteriores funciona :)
También puede buscar la primera parte de su dirección de Mac aquí y ver si aparece como asignada a alguna de las empresas de virtualización.
No me gustó ninguna de estas soluciones, ya que generalmente hay un controlador VMware CDROM o un controlador de memoria instalado, por lo que dmesg me lo confirma o me lo niega rápidamente.
[servidor @ usuario ~] $ dmesg | grep VMware hda: Unidad de CDROM virtual IDE de VMware, unidad de CD / DVD-ROM ATAPI Proveedor: VMware Modelo: Disco virtual Rev: 1.0 Proveedor: VMware Modelo: Disco virtual Rev: 1.0 Proveedor: VMware Modelo: Disco virtual Rev: 1.0 Proveedor: VMware Modelo: Disco virtual Rev: 1.0 Proveedor: VMware Modelo: Disco virtual Rev: 1.0 Proveedor: VMware Modelo: Disco virtual Rev: 1.0 Proveedor: VMware Modelo: Disco virtual Rev: 1.0 Controlador de control de memoria VMware inicializado
Esto funcionó mejor para mí, ya que me da información específica sobre el fabricante y el nombre del producto.
dmidecode -t system|grep 'Manufacturer\|Product'
Salida en el servidor Dell:
Manufacturer: Dell Inc.
Product Name: PowerEdge C5220
Salida en Virtualbox VM:
Manufacturer: innotek GmbH
Product Name: VirtualBox
Salida en KVM / QEMU:
Manufacturer: QEMU
Product Name: Standard PC (i440FX + PIIX, 1996)
Esto es ideal para los scripts que pueden analizarlos para una mejor identificación de los servidores ... pero si usa Chef en su infraestructura, puede verificar el atributo de nodo Virtualization -> system
en el servidor de chef.
Me gusta mucho:
hostnamectl status
o concreto:
hostnamectl status | grep "Chassis:"
Cómo verificar si un sistema Linux es una máquina física o virtual
16 métodos para verificar si un sistema Linux es una máquina física o virtual