【问题标题】:How to generate an unique ID for a given linux machine?如何为给定的 linux 机器生成唯一 ID?
【发布时间】:2015-07-07 20:04:48
【问题描述】:

我的 python 应用程序在各种 linux 发行版中作为守护程序运行,正尝试使用机器的 IP 地址和 FQDN 主机名(由“hostname -f”命令给出)作为主键注册到我的服务器。

现在,当两台机器具有相同的主机名和 IP 地址时,我遇到了一个问题。例如,如果两个虚拟机在两台不同的机器上运行,主机名是“localhost.localdomain”,IP 地址是“192.168.0.2”。

是否有任何独特的方法来区分任何两台机器。 (也许其他第三个参数可以保证在任何 linux 机器上的唯一性)

【问题讨论】:

    标签: linux networking virtual-machine ip-address hostname


    【解决方案1】:

    每个网络接口的 MAC 地址应该是唯一的。 也许您可以尝试 IP、MAC 和主机名的组合?

    另一种选择是创建一个 UUID 并将其保存在机器上。

    【讨论】:

    • 使用 MAC 地址也很棘手,因为 python uuid 文档提到 (docs.python.org/2/library/uuid.html#uuid.getnode ) getnode 函数从任何一个接口随机返回 MAC 地址。 stackoverflow.com/questions/159137/… 也强烈建议不要这样做。如果有任何方法可以使用 python 确定主 MAC 地址,请告诉我。
    • 我认为最好的办法是生成一个随机的uuid并保存在本地机器上,这样你就可以用它向你的服务器识别你自己。只要您将结果保存在机器上并重复使用,getnode 也会完成这项工作。
    • 问题是这个应用程序在大量(数千)用户机器上运行,而不仅仅是在我的机器上本地运行。您的解决方案只会增加我超时获得“重复主键错误”的机会。
    • 正如this 文章所述,重复 uuid 的可能性非常小...如果您将主机名添加到其中,我认为它永远不会发生。
    • 你也可以看到this线程。
    猜你喜欢
    • 2010-09-11
    • 1970-01-01
    • 2012-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-04
    相关资源
    最近更新 更多