我有一个随机生成密码的脚本,我已经修改它以使用zenity
. 当我使用原始脚本时,我可以生成用户选择的任意长度的随机密码(我测试了 50,000)。这是代码:
#!/bin/bash
number=10
echo "hello"
echo "Please enter your number: $number"
read newnumber
# read newnumber
[ -n "$newnumber" ] && number=$newnumber
MATRIX="0123456789<?/_+-!@#$%^&*>ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
# Password will consist of standard characters.
LENGTH=$newnumber
#This variable can be changed for password lenth (need to try get zenity to let user choose that number)
while [ "${n:=1}" -le "$LENGTH" ]
# := is "default substitution" operator.
# So, if 'n' has not been initialized, set it to 1.
do
PASS="$PASS${MATRIX:$(($RANDOM%${#MATRIX})):1}"
# Very clever, but tricky.
# Starting from the innermost nesting...
# ${#MATRIX} returns length of array MATRIX.
# $RANDOM%${#MATRIX} returns random number between 1
# and [length of MATRIX] - 1.
# ${MATRIX:$(($RANDOM%${#MATRIX})):1}
# returns expansion of MATRIX at random position, by length 1.
# See {var:pos:len} parameter substitution in Chapter 9.
# and the associated examples.
# PASS=... simply pastes this result onto previous PASS (concatenation).
# to let zenity show the password being built one character at a time, uncomment the following line
# zenity --info --text="$PASS"
let n+=1
# Increment 'n' for next pass.
done
echo "$PASS"
(我从 [另一个问题] [1]
我现在的问题是,当尝试生成更长的密码时,它们不会显示在zenity --info
对话框中,任何超过 30 的密码都会被命中或错过。我已经通过反复运行脚本并每次选择 60 来显示一个 60 字符,但它还不够好,以至于不能被击中或错过,10 次中有 9 次会产生少于 20 个字符并且越长越挣扎它必须生成。但只在zenity
任何帮助当然都非常感谢。