我有一个过程需要我识别不同的机器,而且我不确定什么是最好的方法。
我不想将该ID保存在文本文件或其他内容中,但是我想在每次需要时从硬件生成该ID(以防带有ID的文本被删除或其他原因)

我检查了UUID,看来还可以,但是我不确定。
我看过 uuid.getNode(),但是我有两个问题:

  • 一部分说:“如果所有尝试获得硬件地址的尝试均失败,我们将按照RFC 4122的建议,选择一个随机的48位数字,将其第八位设置为1”,这意味着在某些系统上,我可能会获得不同的唯一性出于某种原因-是否有办法识别失败的时间并生成其他内容?
  • 的另一部分表示:““硬件地址”是指网络接口(interface)的MAC地址,在具有多个网络接口(interface)的计算机上,可能会返回其中任何一个的MAC地址。”,这意味着如果我有2个不同的网络适配器, ,每个电话我都可以接一个?那对我不好。

  • 如果您有更好的方法来获取机器的唯一ID,那么我可以每次生成该ID,而不必担心会删除它或其他东西-我很高兴听到它。我所有尝试找到东西的尝试都以失败告终。
    谢谢。

    最佳答案

    您可以使用dmidecode

    Linux:

    import subprocess
    
    def get_id():
        return subprocess.Popen('hal-get-property --udi /org/freedesktop/Hal/devices/computer --key system.hardware.uuid'.split())
    

    Windows:
    注意:需要dmidecode for Windows
    import subprocess
    
    def get_id():
        return subprocess.Popen('dmidecode.exe -s system-uuid'.split())
    

    跨平台:
    注意:需要dmidecode for Windows
    import subprocess
    import os
    
    def get_id():
        if 'nt' in os.name:
            return subprocess.Popen('dmidecode.exe -s system-uuid'.split())
        else:
            return subprocess.Popen('hal-get-property --udi /org/freedesktop/Hal/devices/computer --key system.hardware.uuid'.split())
    

    关于python - 使用Python获取唯一的硬件ID,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38328176/

    10-12 18:39