我认为这个问题不需要任何解释。 我正在编写一个可以启动虚拟机来模拟网络的软件。如果软件已在虚拟机上运行,我想禁用此功能。
我已阅读此帖:How to detect if my application is running in a virtual machine? 但是我需要在Linux上做这个,而那篇文章只涉及Windows。
我将其标记为Perl
问题,因为我已经在Perl中执行此操作,但可能在proc
或其他地方有一些文件需要检查并且&#&# 39;对所有语言都一样。我实际上并不知道。
我有兴趣主要检测VirtualBox和KVM,因为那些是我正在使用的虚拟机。
那么,有什么建议吗?
答案 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?