Python判断Xen虚拟化上Linux主机是否为虚拟机

2022-07-13 13:27:20 浏览数 (1)

华为的云计算采用的是Xen的虚拟化,有时候我们要大致判断下主机是否为虚拟机。

Windows主机,直接资源管理器查看硬件设备。

而Linux主机可以用Python脚本来监测

判断 OpenVZ/Xen PV/UML

判断 OpenVZ/Xen PV/UML 是最容易的,直接检查 /proc 下的相关目录和文件就可以知道,比如 OpenVZ VPS 上会有 /proc/vz 这个文件;Xen PV 虚拟机上会有 /proc/xen/ 这个目录,并且目录下有一些东西;UML 上打印 /proc/cpuinfo 会找到 UML 标志。写了一个简单的 Python 脚本来检测:

#!/usr/bin/python # check if a linux system running on a virtual machine (openvz/xen pv/uml) import sys, os def main():     if os.getuid() != 0:         print "must be run as root"         sys.exit(0)     # check OpenVZ/Virtuozzo     if os.path.exists("/proc/vz"):         if not os.path.exists("/proc/bc"):             print "openvz container"         else:             print "openvz node"     # check Xen     if os.path.exists("/proc/xen/capabilities"):         if (os.path.getsize("/proc/xen/capabilities") > 0):             print "xen dom0"         else:             print "xen domU"     # check User Mode Linux (UML)     f = open("/proc/cpuinfo", "r"); t = f.read(); f.close()     if (t.find("UML") > 0):         print "uml" if __name__=="__main__":     main()

0 人点赞