Как я могу определить, работаю ли я на виртуальной машине VMWARE (из linux)?

У меня есть сервер VMWARE ESX. У меня есть RedHat VMs, работающие на этом сервере. Мне нужен способ программного тестирования, если я работаю в виртуальной машине. В идеале, я хотел бы знать, как это сделать от Perl.

5 ответов



вы не должны на 100% зависеть от любого метода, поскольку они являются недокументированными функциями / ошибками - они работают на некоторых ОС хоста и некоторых решениях виртуализации, но нет никакой гарантии, что они будут продолжать работать; действительно, весь смысл виртуализации должен быть как можно менее отличимым от реального металла. Имея это в виду, синяя таблетка Красная таблетка (который упоминается в принятом ответе на этот же вопрос), Кажется, работает ... пока.


VMWare имеет несколько SDK, включая SDK для Perl.


Я думаю (в зависимости от версии esx), вы можете проверить на MAC-адресе NIC. У виртуальных машин, работающих в VMWare NIC, будет строка производителя, назначенная VMWare, без физического NIC MAC. (Мы пытались подделать MAC на VM сервер лицензий, и более новые версии не позволят вам это сделать.) Кроме того, это не гарантирует, что вы не работаете на физическом ящике с NIC, подделанным под VMWare, но это было бы странно делать в большинстве случаев.


выполните следующую команду:

lspci | grep VMware

Он должен показать что-то вроде этого:

00: 0f.0 VGA совместимый контроллер: VMware SVGA II адаптер

00: 11.0 PCI bridge: VMware PCI bridge (rev 02)

00: 15.0 PCI мост: VMware PCI Express корневой порт (rev 01)