最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2015年04月25日 11:09:33   投稿:junjie  
這篇文章主要介紹了Python腳本判斷 Linux 是否運行在虛擬機上,本文講解了判斷 OpenVZ/Xen PV/UML、判斷 VMware/Xen HVM/KVM、判斷 VirtualBox/Virtual PC等方法,需要的朋友可以參考下

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

判斷 OpenVZ/Xen PV/UML

判斷 OpenVZ/Xen PV/UML 是最容易的,直接檢查 /proc 下的相關(guān)目錄和文件就可以知道,比如 OpenVZ VPS 上會有 /proc/vz 這個文件;Xen PV 虛擬機上會有 /proc/xen/ 這個目錄,并且目錄下有一些東西;UML 上打印 /proc/cpuinfo 會找到 UML 標(biāo)志。寫了一個簡單的 Python 腳本來檢測:

復(fù)制代碼 代碼如下:

#!/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 這樣的全虛擬就更難判斷一些,最準(zhǔn)確的辦法是讀取 CPUID 來判斷,Xen 源代碼下面有一段檢測是否是 Xen 的 C 語言代碼 tools/misc/xen-detect.c,這段代碼提供了一個很好的例子,VPSee 重寫了代碼,用宏替代了函數(shù),增加了對 VMware 和 KVM 的識別,用 gcc 編譯后就可以運行:

復(fù)制代碼 代碼如下:

/*
 * 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 關(guān)鍵字就能對應(yīng)上 VirtualBox 和 Virtual PC.

相關(guān)文章

  • 分析如何在Python中解析和修改XML

    分析如何在Python中解析和修改XML

    我們經(jīng)常需要解析用不同語言編寫的數(shù)據(jù)。Python提供了許多庫來解析或拆分用其他語言編寫的數(shù)據(jù)。在此Python XML解析器教程中,您將學(xué)習(xí)如何使用Python解析XML
    2021-06-06
  • python根據(jù)時間生成mongodb的ObjectId的方法

    python根據(jù)時間生成mongodb的ObjectId的方法

    這篇文章主要介紹了python根據(jù)時間生成mongodb的ObjectId的方法,涉及Python操作mongodb數(shù)據(jù)庫的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • 詳解Python如何精確控制asyncio并發(fā)運行多個任務(wù)

    詳解Python如何精確控制asyncio并發(fā)運行多個任務(wù)

    這篇文章主要為大家詳細(xì)介紹了Python如何精確控制asyncio并發(fā)運行多個任務(wù),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-10-10
  • python奇偶行分開存儲實現(xiàn)代碼

    python奇偶行分開存儲實現(xiàn)代碼

    這篇文章主要介紹了python讀取文件,偶數(shù)行輸出一個文件,奇數(shù)行輸出一個文件,需要的朋友可以參考下
    2018-03-03
  • 教你用Type Hint提高Python程序開發(fā)效率

    教你用Type Hint提高Python程序開發(fā)效率

    本文通過介紹和實例教大家如何利用Type Hint來提升Python程序開發(fā)效率,對大家使用python開發(fā)很有幫助,有需要的參考學(xué)習(xí)。
    2016-08-08
  • Python對象類型及其運算方法(詳解)

    Python對象類型及其運算方法(詳解)

    下面小編就為大家?guī)硪黄狿ython對象類型及其運算方法(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • python如何獲取Prometheus監(jiān)控數(shù)據(jù)

    python如何獲取Prometheus監(jiān)控數(shù)據(jù)

    這篇文章主要介紹了python如何獲取Prometheus監(jiān)控數(shù)據(jù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • python數(shù)組循環(huán)處理方法

    python數(shù)組循環(huán)處理方法

    今天小編就為大家分享一篇python數(shù)組循環(huán)處理方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python try-except-else-finally的具體使用

    Python try-except-else-finally的具體使用

    本文主要介紹了Python try-except-else-finally的具體使用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • PyQt5內(nèi)嵌瀏覽器注入JavaScript腳本實現(xiàn)自動化操作的代碼實例

    PyQt5內(nèi)嵌瀏覽器注入JavaScript腳本實現(xiàn)自動化操作的代碼實例

    今天小編就為大家分享一篇關(guān)于PyQt5內(nèi)嵌瀏覽器注入JavaScript腳本實現(xiàn)自動化操作的代碼實例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02

最新評論

泾源县| 成都市| 嵩明县| 武川县| 五河县| 象州县| 泸溪县| 哈密市| 叶城县| 互助| 敦化市| 蓝田县| 柳林县| 井陉县| 突泉县| 宽甸| 渑池县| 时尚| 临猗县| 柯坪县| 德江县| 洞口县| 丰县| 玛曲县| 施甸县| 娄底市| 四平市| 北票市| 徐闻县| 新营市| 江华| 习水县| 绩溪县| 星座| 宁乡县| 安庆市| 新兴县| 合水县| 杭州市| 成安县| 夏津县|