【问题标题】:Python - How to find UUID of computer and set as variablePython - 如何查找计算机的 UUID 并将其设置为变量
【发布时间】:2017-01-18 19:52:43
【问题描述】:

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

我尝试过的一些方法不起作用。

最初的想法:

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

但是这不起作用,并且只返回 0。

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

【问题讨论】:

    标签: python python-3.x hwid


    【解决方案1】:

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

    根据Python official documentation

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

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

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

    你只需要用这个替换你发布的代码:

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

    【讨论】:

    • 我有(((认证)))你同志,
    【解决方案2】:

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

    在 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]
    

    【讨论】:

    • 在 Windows 上不用popenfrom wmi import WMI WMI().Win32_ComputerSystemProduct()[0].UUID
    【解决方案3】:

    对于窗户:

    import wmi
    import os
    
    def get_serial_number_of_system_physical_disk():
        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
    

    【讨论】:

      【解决方案4】:

      对于 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)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-12-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多