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

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

我已经阅读了这篇文章: 如何检测我的应用程序是否在虚拟机中运行? 但是我需要在Linux上这样做,而这篇文章只涵盖了Windows。

我将它标记为一个Perl问题,因为我必须在Perl中执行它,但可能在proc或其他地方有一些文件需要检查,而且对于所有语言都是一样的。 我其实不知道

我感兴趣的是主要检测VirtualBox和KVM,因为那些是我正在使用的VM。

那么,有什么build议?

Solutions Collecting From Web of "如何检测脚本是否在虚拟机上运行?"

我将特别针对VMware和运行Linux的虚拟Box虚拟机作为来宾操作系统进行讨论。 如果你运行下面的命令,你会知道底层硬件是VMware / VirtualBox,证明它是一个虚拟机。

对于VMware来宾:

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

对于Virtual Box来宾:

 # dmidecode | grep -i product Product Name: VirtualBox 

dmidecode ”是一个linux系统命令。 您可以在脚本的开头运行dmidecode并提取值。 如果它是一个虚拟机,那么脚本应该退出而不需要进一步的执行。

我没有任何其他管理程序可以让你获得高于他们的指令回报。

希望这可以帮助。

快速的谷歌收益率dmo.ca/blog/如何检测虚拟化

Perl模块和一切。

你有没有尝试过Sys :: Detect :: Virtualization ,在CPAN上可用?