我有一个过程需要我识别不同的机器,我不确定最好的方法是什么.
我不想在文本文件或其他东西上保存该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())