如何在Shell脚本中生成每个主机的UUID?

5gon12eder

我正在编写一个Shell脚本,该脚本将部署到多台计算机并连接到中央服务器。连接时,脚本应标识正在运行的计算机。(这用于实现一些基本的锁定,但这对问题并不重要。)

我知道我可以使用主机名(由报告hostname -f)来标识机器。但许多个人设备的唯一主机名称,如已远远my-laptopworkstation因此我谨慎使用这个的。

通过将主机名与其​​他一些不会更改的特定于主机的信息一起散列,我也许可以添加熵。

echo $(hostname -f) $(uname -snmpio) | md5sum

但是增加的熵非常低。我很难考虑可以被哈希处理并保证不会更改的其他系统属性。(例如,我不想添加文件系统或其他系统配置1的任何属性,因为它随时可能合法地更改。)

最后,我考虑过在脚本第一次运行时生成一个随机字符串,并将其存储在某个配置文件中。这种想法极有可能是独一无二的,并且保证不会改变。但是,如果可能的话,我宁愿不必管理持久状态。

理想情况下,将存在一种实用程序,用于为本地系统(如blkid块设备)获得确定性的非易失性UUID 不需要伪造UUID。这不是身份验证机制,我信任运行脚本的所有各方。

有什么我忽略的高级选择吗?


1从技术上讲,主机名也是系统配置。但是,如果我们更改它,我们希望该系统不再被识别为以前的系统。

凯文·伯特(Kevin Burdett)

为了提供选项,您可以使用本地主机的RSA指纹。您的机器很可能已经配置了所有必需的组件。

hostkey=$(ssh-keygen -l -f /path/to/host_key.pub)

输出将包含空格和其他内容,但是如果有问题,您可以将其解析出来。主机密钥通常在其中,/etc/ssh/ssh_host_*但可能取决于linux的发行版。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章