国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python腳本判斷 Linux 是否運行在虛擬機上

Python腳本判斷 Linux 是否運行在虛擬機上

2020-06-13 23:26腳本之家 Python

這篇文章主要介紹了Python腳本判斷 Linux 是否運行在虛擬機上,本文講解了判斷 OpenVZ/Xen PV/UML、判斷 VMware/Xen HVM/KVM、判斷 VirtualBox/Virtual PC等方法,需要的朋友可以參考下

在 WebHostingTalk 論壇上有些國外奸商會把虛擬機當作獨立服務器賣,去年7月份的時候就有一位中國同胞上當受騙,并在 WHT 上發帖聲討,證據確鑿,甚至連服務商自己也承認,回帖達355篇。這家獨立服務器/VPS 提供商 HostATree.com 居然大膽的把 OpenVZ VPS 這種一看就知道是虛擬機的虛擬機當作獨立服務器賣,暈,至少也要弄個 VMWare/KVM/Xen HVM 吧(更難發現是虛擬機),用 OpenVZ 這種容器也太欺負人了:)昨天恰好收到網友一封郵件問到了如何判斷自己買的是獨立服務器還是虛擬機的問題。這里 VPSee 簡單介紹一下市面上常用虛擬技術(包括容器技術)的判別小技巧。

判斷 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()


判斷 VMware/Xen HVM/KVM

 

如果使用的是 VMware/Xen HVM/KVM 這樣的全虛擬就更難判斷一些,最準確的辦法是讀取 CPUID 來判斷,Xen 源代碼下面有一段檢測是否是 Xen 的 C 語言代碼 tools/misc/xen-detect.c,這段代碼提供了一個很好的例子,VPSee 重寫了代碼,用宏替代了函數,增加了對 VMware 和 KVM 的識別,用 gcc 編譯后就可以運行:

復制代碼 代碼如下:


/*
 * check if a linux system running on a virtual machine (vmware/xen hvm/kvm)
 */
#include stdio.h
#include string.h

 

#define HYPERVISOR_INFO 0x40000000

#define CPUID(idx, eax, ebx, ecx, edx) \
    asm volatile ( \
        "test %1,%1 ; jz 1f ; ud2a ; .ascii \"xen\" ; 1: cpuid" \
        : "=b" (*ebx), "=a" (*eax), "=c" (*ecx), "=d" (*edx) \
        : "0" (idx) );

int main(void)
{
        unsigned int eax, ebx, ecx, edx;
        char string[13];

        CPUID(HYPERVISOR_INFO, &eax, &ebx, &ecx, &edx);
        *(unsigned int *)(string+0) = ebx;
        *(unsigned int *)(string+4) = ecx;
        *(unsigned int *)(string+8) = edx;

        string[12] = 0;
        if (strncmp(string, "XenVMMXenVMM", 12) == 0) {
                printf("xen hvm\n");
        } else if (strncmp(string, "VMwareVMware", 12) == 0) {
                printf("vmware\n");
        } else if (strncmp(string, "KVMKVMKVM", 12) == 0) {
                printf("kvm\n");
        } else
                printf("bare hardware\n");

        return 0;
}


判斷 VirtualBox/Virtual PC

 

什么?這種家用桌面虛擬機自己裝的還會不知道?!如果不知道的話也有辦法,在 Linux 下運行 dmidecode 工具然后查找 Manufacturer: innotek GmbH, Manufacturer: Microsoft Corporation 關鍵字就能對應上 VirtualBox 和 Virtual PC.

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美一级特黄aaaaaaa在线观看 | 欧美久久精品一级黑人c片 成人在线视频免费观看 | 久久久久久中文字幕 | 久久精品国产91精品亚洲高清 | 日韩一区二区三区在线 | 91久久在线| 九色影院| 亚洲欧美一区二区三区久久 | 亚洲性在线 | 国产精品影院在线观看 | 国内精品一区二区三区 | 99久久久国产精品 | www久| 久久亚洲欧美日韩精品专区 | 欧美日韩一区二区中文字幕 | 亚洲一区在线观看视频 | 九九热九九 | 国产精品成人一区二区三区 | 欧美一区二区三区在线播放 | 国产成人免费在线 | 国产中文视频 | 日韩精品在线一区 | 国产成人精品一区二区三区视频 | 卡通动漫第一页 | 欧美视频在线免费 | 国产亚洲精品精品国产亚洲综合 | 色版视频在线观看 | 亚洲一本 | 国产精品一级毛片在线 | 中文字幕在线免费视频 | 亚洲视频欧美视频 | 日韩在线免费 | aaa视频网站 | 久久久久久久久国产 | 亚洲中午字幕 | 最近中文字幕 | 久久精品视频一区 | 综合精品久久久 | 精品成人免费一区二区在线播放 | 亚洲www视频| 冥王星之恋泰剧在线观看 |