将随机生成的密码设置为变量?

将随机生成的密码设置为变量?

我正在使用以下行在 bash 脚本中创建一个随机生成的密码,但看起来字符串实际上并没有被设置为变量。

#Generate random password
PASSWORD=date+%s|sha256sum|base64|head -c 32;
echo $PASSWORD

当我稍后在此脚本中引用 $PASSWORD 时,drush 会抱怨我没有提供密码。为了进行测试,我尝试了几次“回显”来证实我的怀疑。我的赋值语句中似乎有什么问题吗?

答案1

你必须使用命令替换

#Generate random password
PASSWORD=$(date +%s|sha256sum|base64|head -c 32)
echo $PASSWORD

那么它就可以工作了。

更喜欢“$”符号,请在此处阅读更多信息:在 shell 脚本中使用反引号或美元符号

答案2

您需要使用命令替换引用,例如

PASSWORD=`date +%s|sha256sum|base64|head -c 32`
echo $PASSWORD

或者你也可以这样做,

PASSWORD=$(date +%s|sha256sum|base64|head -c 32)
echo $PASSWORD

答案3

仅根据当前时间生成密码是相当糟糕的。

因为您需要一个 32 个字符的密码,所以我会执行以下操作:

PASSWORD=$(head -c 16  /dev/random | md5sum | cut -f 1 -d\ )

答案4

由于没有声誉发表评论,我被迫在这个帖子上添加一个非答案

和@Ángel一样,我对根据时间生成密码持怀疑态度,所以我做了一些测试

使用@Ángel 提出的命令:密码的平均熵为:125位

使用命令根据时间正如@souravc 所建议的:平均密码熵是:175位

所以根据时间生成密码并不是那么糟糕 ;)

相关内容