Como posso saber de forma programática se o host em que um script está sendo executado é uma VM do VirtualBox?

2

Existe alguma maneira de saber se o host em que um script está sendo executado é uma VM guest do VirtualBox? O ideal é que eu esteja procurando uma maneira multiplataforma. Eu acho que isso é quase impossível a menos que, talvez, algo no Guest Additions forneça isso.

    
por Joe Casadonte 23.03.2010 / 20:34

2 respostas

2

Fizemos algumas pesquisas pelo Linux, dmidecode | less produz:

# dmidecode 2.10
SMBIOS 2.5 present.
5 structures occupying 256 bytes.
Table at 0x000E1000.

Handle 0x0000, DMI type 0, 20 bytes
BIOS Information
        Vendor: innotek GmbH
        Version: VirtualBox

E o equivalente do Windows (graças a Andrew Koester pelo apontador)

C:\> wmic bios get smbiosbiosversion
SMBIOSBIOSVersion
VirtualBox

Existe um equivalente Solaris, mas não posso testá-lo porque só tenho acesso a máquinas Sparc. Mas, para completar, aqui está: /usr/sbin/smbios

    
por 23.03.2010 / 20:37
1

No Windows, você pode consultar as informações do BIOS com o WMI. link

Eu não acredito que você vai encontrar uma solução multi-plataforma, pelo menos sem ir até o fim e lê-lo diretamente fora da memória de baixo nível. (Nesse caso, você pode estar interessado no código-fonte para dmidecode)

    
por 23.03.2010 / 20:42

Tags