Perl 我如何判断我是否';我在VMWARE虚拟机中运行(来自linux)?

Perl 我如何判断我是否';我在VMWARE虚拟机中运行(来自linux)?,perl,vmware,redhat,esx,Perl,Vmware,Redhat,Esx,我有一台VMWARE ESX服务器。我在那个服务器上运行Redhat虚拟机。如果我在虚拟机中运行,我需要一种编程测试的方法。理想情况下,我想知道如何从Perl中执行此操作。请参阅“.”的答案。VMWare有两个SDK,包括一个。我认为(取决于esx的版本),您可以在NIC的MAC地址进行检查。在VMWare NIC中运行的虚拟机将有一个制造商字符串分配给VMWare,而不是物理NIC MAC。(我们试图将MAC虚拟机伪装成许可证服务器,而较新版本不允许您这么做。)此外,这也不能保证您在物理机箱上

我有一台VMWARE ESX服务器。我在那个服务器上运行Redhat虚拟机。如果我在虚拟机中运行,我需要一种编程测试的方法。理想情况下,我想知道如何从Perl中执行此操作。

请参阅“.”的答案。

VMWare有两个SDK,包括一个。

我认为(取决于esx的版本),您可以在NIC的MAC地址进行检查。在VMWare NIC中运行的虚拟机将有一个制造商字符串分配给VMWare,而不是物理NIC MAC。(我们试图将MAC虚拟机伪装成许可证服务器,而较新版本不允许您这么做。)此外,这也不能保证您在物理机箱上运行的NIC伪装成VMWare,但无论如何,在大多数情况下,这是一件奇怪的事。

您不应该100%依赖任何方法,由于它们是未记录的特性/缺陷-它们可以在一些主机操作系统和一些虚拟化解决方案上工作,但不能保证它们会继续工作;事实上,虚拟化的全部要点是尽可能地与真实金属保持一致。考虑到这一点,(在被接受的答案中提到)似乎是有效的。。。现在。

运行以下命令:

lspci | grep VMware
它应该显示如下内容:

00:0f.0 VGA兼容控制器:VMware SVGA II适配器

00:11.0 PCI桥:VMware PCI桥(版本02)

00:15.0 PCI网桥:VMware PCI Express根端口(版本01)


Virtualbox允许您输入您想要的任何MAC,我认为您可以在ESX中更改它。这是一个非常有用的功能,如果您试图在VMI中运行许可证应用程序,请查看VMware VGA控制器,甚至适用于VirtualBox(在带有Ubuntu guest的Windows上)。