Linux命令生成新的GUID?

时间:2013-05-04 08:51:55

标签: linux guid

有时在bash脚本中,我需要生成新的GUID(Global Unique Identifier)

我已经通过生成新guid的简单python脚本完成了这项工作:请参阅here

#! /usr/bin/env python
import uuid
print str(uuid.uuid1())

但我需要将此脚本复制到我正在使用的任何新系统中。

我的问题是:任何人都可以介绍一个包含类似命令的命令或包吗?

5 个答案:

答案 0 :(得分:14)

假设您没有uuidgen,则不需要脚本:

$ python -c 'import uuid; print str(uuid.uuid1())'
b7fedc9e-7f96-11e3-b431-f0def1223c18

答案 1 :(得分:4)

由于您需要随机 UUID,因此您希望使用Type 4而不是Type 1:

sudo chmod -R 777

Wikipedia article解释了不同类型的UUID。你想要“Type 4(Random)”。

我使用Python编写了一个小的Bash函数来批量生成任意数量的Type 4 UUID:

python -c 'import uuid; print str(uuid.uuid4())'

如果您更喜欢小写,请更改:

# uuid [count]
#
# Generate type 4 (random) UUID, or [count] type 4 UUIDs.
function uuid()
{
    local count=1
    if [[ ! -z "$1" ]]; then
        if [[ "$1" =~ [^0-9] ]]; then
            echo "Usage: $FUNCNAME [count]" >&2
            return 1
        fi

        count="$1"
    fi

    python -c 'import uuid; print("\n".join([str(uuid.uuid4()).upper() for x in range('"$count"')]))'
}

要:

python -c 'import uuid; print("\n".join([str(uuid.uuid4()).upper() for x in range('"$count"')]))'

答案 2 :(得分:4)

您可以使用命令uuidgen。简单执行uuidgen将为您提供基于时间的UUID:

$ uuidgen
18b6f21d-86d0-486e-a2d8-09871e97714e

答案 3 :(得分:1)

在Python 3中,不需要强制转换为str

python -c 'import uuid; print(uuid.uuid4())'

答案 4 :(得分:0)

如果您只想生成在位置 8、12、16 和 20 处带有一些破折号的伪随机字符串,可以使用 apg

apg -a 1 -M nl -m32 -n 1 -E ghijklmnopqrstuvwxyz | \
    sed -r -e 's/^.{20}/&-/' | sed -r -e 's/^.{16}/&-/' | \
    sed -r -e 's/^.{12}/&-/' | sed -r -e 's/^.{8}/&-/'

apg 子句从 [0-9a-f](小写)生成 32 个符号。一系列 sed 命令添加了 - 标记并且很可能会被缩短。

请注意,UUID 通常具有特定格式:

xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx

此处的 MN 字段对 UUID 的版本/格式进行编码。