如何在Python脚本中检测Xen?

2024-09-30 04:38:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要确定Python脚本何时在Xen虚拟机中运行。虚拟机将运行Linux。在

我在平台模块中找不到任何明显的东西。我能找到的最接近的就是“xen”的出现平台.平台()

>>> platform.platform()
'Linux-2.6.18-194.el5xen-x86_64-with-redhat-5.5-Final'

确定这一点的最佳方法是什么?在

谢谢。在


Tags: 模块方法脚本linuxwith平台x86final
3条回答

仅供参考,如果它是一个准虚拟虚拟机,那么应该有一个/proc/xen/capabilities文件。如果它的内容是“control\d”,那么您运行的是dom0-else,您运行的是domU。
不要依赖内核版本。如果VM是用一个定制的内核或者不同的内核版本或者甚至是一个现代的PV-ops内核(不像REDHAT的内核,它没有“xen”字符串),那么您的代码就不能工作了。在

另一方面,还有其他妙招。cpuid指令就是这样一个例子。我不知道如何在python中实现,但是如果您将eax设置为1并调用cpuid,ECX的第31位将得到答案。如果已设置,则表示您正在运行hypervisor。否则,你就不是了。但这只适用于64位平台。在

你能相信platform.platform()吗?我不知道。如果你可以,而且每次都有效:

>>> output = 'Linux-2.6.18-194.el5xen-x86_64-with-redhat-5.5-Final'
>>> if 'xen' in output:
      print 'Xen found'

Xen found

有不止一种方法可以做到这一点。你想追随哪一个取决于你自己。看看这个问题here在SO上,它只回答这个问题。现在您的任务是在Python中实现这一点,这可能涉及调用一些外部进程并检查输出。有可能吗?对。在

什么是:http://people.redhat.com/~rjones/virt-what/

virt-what is a shell script which can be used to detect if the program is running in a virtual machine.

virt-what supports a very large number of different hypervisor types, including common open source hypervisors (KVM, Xen, QEMU, VirtualBox), mainframe systems like IBM Systemz, LPAR, z/VM, hardware partitioning schemes like Hitachi Virtage, proprietary hypervisors like VMWare, Microsoft Hyper-V and much more.

相关问题 更多 >

    热门问题