10

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

4

5 回答 5

7

请参阅“从应用程序检测虚拟化操作系统? ”的答案。

于 2009-02-12T11:53:58.793 回答
4

您不应该 100% 依赖任何方法,因为它们是未记录的功能/错误 - 它们适用于某些主机操作系统和某些虚拟化解决方案,但不能保证它们会继续工作;事实上,虚拟化的全部意义在于尽可能地与真实金属没有区别。考虑到这一点,蓝色药丸红色药丸(在这个类似问题的公认答案中提到)似乎工作......现在。

于 2009-02-12T13:06:38.447 回答
3

VMWare 有几个 SDK,包括一个用于 Perl 的 SDK

于 2009-02-12T11:55:07.323 回答
2

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

于 2009-02-12T12:48:47.413 回答
2

运行以下命令:

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)

于 2013-06-26T17:28:24.263 回答