从网上查看有大量的随机生成字符穿相关的面试题,比如下方:
使用for
循环在/oldboy
目录下通过随机小写10
个字母加固定字符串oldboy批量创建10
个html文件,名称例如为:
[root@db02 ~]# sh html.sh
[root@db02 ~]# ls /oldboy/
aebccciiaj_oldboy.html fffabecgbc_oldboy.html
afffebcchb_oldboy.html ffghcffegb_oldboy.html
dbccddabbj_oldboy.html hffbhfgdff_oldboy.html
ehbdaedach_oldboy.html jadafhbaaf_oldboy.html
fbaacihehi_oldboy.html jgfebjbebd_oldboy.html
[root@db02 ~]# cat html.sh
#!/bin/bash
. /etc/init.d/functions
[ -d /oldboy ]|| mkdir -p /oldboy
cd /oldboy
for i in `seq 10`
do
touch `echo $RANDOM|md5sum|cut -c 1-10|tr "[0-9]" "[a-z]"`_oldboy.html
done
批量创建10
个系统帐号oldboy01-oldboy10
并设置密码(密码为随机
8位字符串)
[root@db02 tmp]# cat useradd.sh
#!/bin/bash
[ $UID -ne 0 ]&& echo "only root run"&&exit 1
[ -f /etc/init.d/functions ]&& . /etc/init.d/functions
isexist() {
result=$(grep -w "^$1" /etc/passwd|wc -l)
if [ $result -ne 0 ];then
echo "user $1 is exist!!"
ret 1 "create user is "
continue
fi
}
ret() {
if [ $1 -eq 0 ];then
action "$2" /bin/true
else
action "$2" /bin/false
fi
}
create() {
for i in $(seq -w 10)
do
user="oldboy$i"
isexist $user
pass=$(cat /proc/sys/kernel/random/uuid|md5sum|cut -c 1-10)
useradd $user&&echo $pass|passwd --stdin $user &>/dev/null
ret $? "crate user $user"
echo "$user $pass" >> /tmp/user.list
done
}
main() {
create
}
main
上面这2个脚本,主要使用了$RANDOM 进行随机字符获取,关于$RANDOM可以直接进行echo 输出测试
[root@sftp01 test]#
[root@sftp01 test]# echo $RANDOM
28411
[root@sftp01 test]# echo $RANDOM
6371
[root@sftp01 test]# echo $RANDOM
1938
每次进行输出,结果都是不一样的数字, 脚本中使用不同数字,然后再进行md5sum命令进行加密,这样就可以获取到不同的字符串了
[root@sftp01 test]# echo $RANDOM | md5sum
19033471c53812af4f46a0fa30b814cf -
[root@sftp01 test]# echo $RANDOM | md5sum
ab43097ee4f6e091aed46f79f27b0af8 -
[root@sftp01 test]#
[root@sftp01 test]# echo $RANDOM | md5sum
4ae10fe04b1578f55eb88e73d2e4bd7b -
获取到不同字符串后,然后再配合cut -c 进行截取,这样就可以实现了。