Python - 如何查找计算机的UUID并设置为变量

时间:2016-09-11 02:28:11

标签: python python-3.x hwid

我一直在寻找一种方法来找到一种方法来获取计算机的UUID并将其设置为python中的变量。

我尝试过的一些方法并没有奏效。

最初的想法:

import os
x = os.system("wmic diskdrive get serialnumber")
print(x)

但是这不起作用,只返回0.

我想知道他们是否可以在python中找到唯一的Harddrive ID或任何其他类型的标识符。

5 个答案:

答案 0 :(得分:3)

os.system函数返回已执行命令的退出代码,而不是它的标准输出。

根据Python official documentation

  

在Unix上,返回值是以wait()指定的格式编码的进程的退出状态。

     

在Windows上,返回值是系统shell返回的值   在运行命令之后。

要获得所需的输出,建议的方法是使用子进程模块中定义的一些函数。您的场景非常简单,因此subprocess.check_output可以正常使用它。

您只需要用此替换您发布代码的代码:

import subprocess
x = subprocess.check_output('wmic csproduct get UUID')
print(x)

答案 1 :(得分:3)

如果目的是获取硬盘的序列号,那么可以这样做:

在Linux中(将/ dev / sda替换为您想要信息的块磁盘标识符):

>>> import os
>>> os.popen("hdparm -I /dev/sda | grep 'Serial Number'").read().split()[-1]

在Windows中:

>>> import os
>>> os.popen("wmic diskdrive get serialnumber").read().split()[-1]

答案 2 :(得分:1)

对于Windows:

def get_serial_number_of_system_physical_disk():
    import wmi
    import os

    c = wmi.WMI()
    logical_disk = c.Win32_LogicalDisk(Caption=os.getenv("SystemDrive"))[0]
    partition = logical_disk.associators()[1]
    physical_disc = partition.associators()[0]
    return physical_disc.SerialNumber

答案 3 :(得分:0)

您可以使用标准库uuid模块中的uuid1

import uuid
myuuid = uuid.uuid1() 

这可用于:

  

从主机ID,序列号和当前时间生成UUID。

但请注意,在使用此uuid时应小心,因为它

  

可能会破坏隐私,因为它会创建一个包含该隐私的UUID   计算机的网络地址。

如果这不是你想要的,the uuid modul e有许多其他好方法来生成uuids。

另外,有关如何使用Python获取硬盘序列号的详细说明,请参阅this answer,如果这正是您要查找的内容。

答案 4 :(得分:0)

对于Linux,请尝试以下操作:

def get_uuid():
    dmidecode = subprocess.Popen(['dmidecode'],
                                      stdout=subprocess.PIPE,
                                      bufsize=1,
                                      universal_newlines=True
                                      )

    while True:
        line = dmidecode.stdout.readline()
        if "UUID:" in str(line):
            uuid = str(line).split("UUID:", 1)[1].split()[0]
            return uuid
        if not line:
            break

my_uuid = get_uuid()
    print("My ID:", my_uuid)