首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Python获取唯一的硬件ID

使用Python获取唯一的硬件ID
EN

Stack Overflow用户
提问于 2016-07-12 11:53:37
回答 7查看 37.5K关注 0票数 15

我有一个过程,要求我识别不同的机器,我不知道什么是最好的方法。我不想将该ID保存在文本文件或其他文件中,但每次需要时,我都希望从硬件中生成ID (以防带有ID的文本被删除或其他)。

我查过UUID了,看上去没问题,但我不确定。我看过uuid.getNode(),,但是我有两个问题:

  1. 其中一部分说:“如果所有获得硬件地址的尝试都失败了,我们选择一个随机的48位数,它的第八位设置为RFC 4122中推荐的1”,这意味着,由于某种原因,我可能在某些系统上得到不同的唯一--是否有一种方法可以识别它失败的时间并生成其他东西?
  2. 另一部分说:“硬件地址”是指网络接口的MAC地址,在具有多个网络接口的机器上,可以返回其中任何一个的MAC地址。“这意味着,如果我有两个不同的网络适配器,每个呼叫都可以得到其中的一个?这对我不好。

如果你有一个更好的方法为一台机器获得一个唯一的ID,我可以每次生成,而不必担心删除它或其他什么-我很高兴听到它。我所有的尝试都失败了。谢谢。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2016-07-12 12:19:55

你可以用dmidecode

Linux:

代码语言:javascript
运行
复制
import subprocess

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

窗口:

注意:需要用于Windows的dmidecode

代码语言:javascript
运行
复制
import subprocess

def get_id():
    return subprocess.Popen('dmidecode.exe -s system-uuid'.split())

Cross-platform:

注意:需要用于Windows的dmidecode

代码语言:javascript
运行
复制
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())
票数 10
EN

Stack Overflow用户

发布于 2016-10-10 11:40:35

请注意,您可以从Windows获得相同的UUID,而无需使用以下命令安装任何其他软件:

代码语言:javascript
运行
复制
C:\> wmic csproduct get uuid
票数 19
EN

Stack Overflow用户

发布于 2016-10-16 20:55:14

对于windows,每次基于MAC地址的por每个设备都得到相同的uuid:

(uuid.uuid1(uuid.getnode(),0))24:

但是它似乎没有在Android4.4.2上保留相同的ID。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38328176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档