使用Python获取唯一的硬件ID

我有一个过程需要我识别不同的机器,我不确定最好的方法是什么.
我不想在文本文件或其他东西上保存该ID,但我想在每次需要时从硬件生成它(如果带有ID的文本被删除或者其他东西)

我已经检查了UUID,看起来还可以,但我不确定.
我看了一下uuid.getNode(),但我遇到了2个问题:

>一部分说“如果所有尝试获取硬件地址失败,我们选择一个随机的48位数字,其第八位设置为1,如RFC 4122中所推荐的”,这意味着我可能会在某些系统上获得不同的唯一某种原因 – 有没有办法确定哪个时间失败并产生其他东西?
>另一部分说:“”硬件地址“表示网络接口的MAC地址,在具有多个网络接口的计算机上,可以返回其中任何一个的MAC地址.”,这意味着如果我有2个不同的网络适配器,每次打电话我都可以得到其中任何一个?这对我不好.

如果您有更好的方法来获取机器的唯一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())

视窗:
注意:需要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())
上一篇:能不能在FOR循环中执行SQL?


下一篇:c – 在Linux中获取主板设备ID和BIOS串行