我正在使用以下行在 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位
所以根据时间生成密码并不是那么糟糕 ;)