Solución:
En determinadas condiciones:
comando de terminal que no requiere que el usuario que lo ejecuta esté en el grupo sudoers y también que sea universal y no requiera instalar paquetes adicionales.
El método más simple y obvio para las máquinas virtuales no modificadas, que los propietarios no han intentado ocultar intencionalmente el hecho de que el sistema operativo es una máquina virtual, es
cat /sys/class/dmi/id/product_name
Más posibilidades:
- Cómo detectar la virtualización
- 16 métodos para verificar si un sistema Linux es una máquina física o virtual
Fuera de las condiciones dadas por el autor de OP, hay enfoques más complicados como este: ¿Dónde estoy? Identificación del sistema operativo y la virtualización sin llamadas al sistema
Esto también requiere systemd (que es bastante omnipresente en estos días de todos modos), pero systemd-detect-virt
es una mejor herramienta para saber si se está ejecutando en hardware físico o virtual.
Puedes echar un vistazo a la lógica utilizada por systemd-detect-virt
, notará que en realidad busca en muchos lugares para detectar varias tecnologías de virtualización distintas …
Creo que algo ingenuo como mirar lscpu
la salida puede funcionar en algunos casos algunas veces, pero creo que difícilmente funcionaría todo el tiempo. También tenga en cuenta que muchas tecnologías hacen posible (e incluso probable) que las máquinas virtuales tengan más de un hilo por núcleo, por lo que ni siquiera creo que esa característica en particular sea suficiente para hacer ningún tipo de detección confiable aquí.