如何检测脚本是否在虚拟机上运行?

时间:2012-10-13 14:59:12

标签: linux perl virtualization detection

我认为这个问题不需要任何解释。 我正在编写一个可以启动虚拟机来模拟网络的软件。如果软件已在虚拟机上运行,​​我想禁用此功能。

我已阅读此帖:How to detect if my application is running in a virtual machine? 但是我需要在Linux上做这个,而那篇文章只涉及Windows。

我将其标记为Perl问题,因为我已经在Perl中执行此操作,但可能在proc或其他地方有一些文件需要检查并且&#&# 39;对所有语言都一样。我实际上并不知道。

我有兴趣主要检测VirtualBox和KVM,因为那些是我正在使用的虚拟机。

那么,有什么建议吗?

3 个答案:

答案 0 :(得分:11)

我将特别讨论运行Linux作为客户操作系统的VMware和虚拟Box虚拟机。 如果您运行以下命令,您将会发现底层硬件是VMware / VirtualBox,它证明它是虚拟机。

对于VMware guest:

# dmidecode  | grep -i product
        Product Name: VMware Virtual Platform

对于Virtual Box guest:

# dmidecode  | grep -i product
    Product Name: VirtualBox

dmidecode”是一个linux系统命令。您可以在脚本的开头运行perl run dmidecode并提取值。如果它是虚拟机,则脚本应该在不进一步执行的情况下退出。

我没有任何其他虚拟机管理程序可以让你获得上面的命令返回它们。

希望这有帮助。

答案 1 :(得分:3)

快速Google产生dmo.ca/ blog/ How to detect virtualization

Perl模块和所有内容。

答案 2 :(得分:1)

您是否尝试过CPAN上提供的Sys::Detect::Virtualization