今天在做一道题时要求生成指定长度的密码,要求包含小写字母大写字母或数字
于是乎我写了一个脚本,放在/usr/bin目录下供脚本中调用。
每一个字符都是由系统变量RANDOM随机从指定的库中取余得出的。
脚本用法:
默认不加参数表示输出数字,不指定长度默认为8位。
L:表示输出小字字母
N:表示输出数字
U:表示输出大写字母
使用方法:
cd /usr/bin vim rand
将代码写入保存
[reply]
#!/usr/bin/bash
#Version V1.0
#Author ChenGuilin
#Create Time 2018-11-5
#QQ 21108858
#site https://www.gl.sh.cn
#随机生成字符串
#任意数字: 生成随机数的位数(默认产生8位随机字符)
#N : 使用数字(不加选项时,默认使用数字)
#U : 使用大写字母
#L : 使用小写字母
while [[ $# -ge 1 ]]; do
case $1 in
-n|--num)
shift
inNum="$1"
shift
;;
-N|--number)
shift
isNumber='1'
;;
-L|--lower)
shift
isLower='1'
;;
-U|--upper)
shift
isUpper='1'
;;
-h|-H|--help)
echo -ne " Usage:\n\t$0\t[NUL][number]\n\t\t-N\--number\n\t\t-L\--lower\n\t\t-U\--upper\n"
exit 1;
;;
*)
[ -n "$(echo -n "$1" |grep 'N\|number')" ] && isNumber='1'
[ -n "$(echo -n "$1" |grep 'L\|lower')" ] && isLower='1'
[ -n "$(echo -n "$1" |grep 'U\|upper')" ] && isUpper='1'
inNum="$(echo -n "$1" |sed 's/-\|L\|lower\|N\|number\|U\|upper//g')"
shift
;;
esac
done
[ -n $inNum ] && [ "$inNum" != "$(echo "$inNum" |grep -o '[0-9]\{1,\}' |xargs |sed 's/ //g')" ] && echo "Error, invalid input." && exit 1;
[ -z $inNum ] && Num='8' || Num="$inNum"
[ "$isLower" != '1' -a "$isUpper" != '1' ] && isNumber='1'
pool_N=(0 1 2 3 4 5 6 7 8 9)
pool_L=(a b c d e f g h i j k l m n o p q r s t u v w x y z)
pool_U=(A B C D E F G H I J K L M N O P Q R S T U V W X Y Z)
[ "$isNumber" == '1' ] && POOL=(${pool_N[@]})
[ "$isLower" == '1' ] && POOL=(${pool_L[@]})
[ "$isUpper" == '1' ] && POOL=(${pool_U[@]})
[ "$isNumber" == '1' ] && [ "$isLower" == '1' ] && POOL=(${pool_N[@]} ${pool_L[@]})
[ "$isNumber" == '1' ] && [ "$isUpper" == '1' ] && POOL=(${pool_N[@]} ${pool_U[@]})
[ "$isLower" == '1' ] && [ "$isUpper" == '1' ] && POOL=(${pool_L[@]} ${pool_U[@]})
[ "$isNumber" == '1' ] && [ "$isLower" == '1' ] && [ "$isUpper" == '1' ] && POOL=(${pool_N[@]} ${pool_L[@]} ${pool_U[@]})
i=0
while :;
do
STR[$i]=${POOL[$((RANDOM%${#POOL[@]}))]}
let i++
[ "$i" -ge "$Num" ] && break
done
for str in ${STR[*]}
do
echo -n $str
done
[/reply]
设置脚本权限
chmod +x /usr/bin/rand
使用方法:
rand 12LNU
以下是我给出的一些示例供参考
使用示例:
生成含大写小写数字,长度为12的字符串
[root@m01 ~]# /server/scripts/bin/rand 12LNU FRm76i3Or6pU
生成纯数字12位字符串
[root@m01 ~]# /server/scripts/bin/rand 12 387403678377
生成纯数字8位字符串
[root@m01 ~]# /server/scripts/bin/rand 78102405
生成纯小字8位字符串
[root@m01 ~]# /server/scripts/bin/rand L kkwbzsid
帮助
[root@m01 ~]# /server/scripts/bin/rand -h
Usage:
/server/scripts/bin/rand [NUL][number]
-N\--number
-L\--lower
-U\--upper



Asynq任务框架
MCP智能体开发实战
WEB架构
安全监控体系





看看啥情况。
nihao