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

时间:2009-02-12 11:25:50

标签: perl vmware redhat esx

我有一台VMWARE ESX服务器。我在该服务器上运行Redhat VM。如果我在VM中运行,我需要一种以编程方式测试的方法。理想情况下,我想知道如何从Perl中做到这一点。

5 个答案:

答案 0 :(得分:7)

请参阅“Detect virtualized OS from an application?”的答案。

答案 1 :(得分:4)

您不应该100%依赖任何方法,因为它们是未记录的功能/错误 - 它们适用于某些主机操作系统和某些虚拟化解决方案,但无法保证它们将继续工作;实际上,虚拟化的全部意义在于尽可能与真实金属无法区分。考虑到这一点,blue pill red pill(在[{3}}的公认答案中提到)似乎现在有用......

答案 2 :(得分:3)

VMWare有几个SDK,包括SDK for Perl

答案 3 :(得分:2)

我认为(取决于esx的版本)您可以检查NIC的MAC地址。在VMWare NIC中运行的VM将具有分配给VMWare的制造商字符串,而不是物理NIC MAC。 (我们试图将MAC欺骗到VM作为许可证服务器,而较新的版本将不允许您这样做。)此外,这并不能保证您不会在物理盒上运行,其中NIC被欺骗,看起来像VMWare,但无论如何,这在大多数情况下都是一件奇怪的事情。

答案 4 :(得分:1)

运行以下命令:

lspci | grep VMware

它应该显示如下:

  

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

     

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

     

00:15.0 PCI桥:VMware PCI Express根端口(rev 01)