shell 中系统变量$RANDOM的使用

9 篇文章 0 订阅

从网上查看有大量的随机生成字符穿相关的面试题,比如下方: 

使用for循环在/oldboy目录下通过随机小写10个字母加固定字符串oldboy批量创建10个html文件,名称例如为:

  1. [root@db02 ~]# sh html.sh
  2. [root@db02 ~]# ls /oldboy/
  3. aebccciiaj_oldboy.html fffabecgbc_oldboy.html
  4. afffebcchb_oldboy.html ffghcffegb_oldboy.html
  5. dbccddabbj_oldboy.html hffbhfgdff_oldboy.html
  6. ehbdaedach_oldboy.html jadafhbaaf_oldboy.html
  7. fbaacihehi_oldboy.html jgfebjbebd_oldboy.html
  8. [root@db02 ~]# cat html.sh
  9. #!/bin/bash
  10. . /etc/init.d/functions
  11. [ -d /oldboy ]|| mkdir -p /oldboy
  12. cd /oldboy
  13. for i in `seq 10`
  14. do
  15. touch `echo $RANDOM|md5sum|cut -c 1-10|tr "[0-9]" "[a-z]"`_oldboy.html
  16. done

批量创建10个系统帐号oldboy01-oldboy10并设置密码(密码为随机8位字符串)

  1. [root@db02 tmp]# cat useradd.sh
  2. #!/bin/bash
  3. [ $UID -ne 0 ]&& echo "only root run"&&exit 1
  4. [ -f /etc/init.d/functions ]&& . /etc/init.d/functions
  5. isexist() {
  6. result=$(grep -w "^$1" /etc/passwd|wc -l)
  7. if [ $result -ne 0 ];then
  8. echo "user $1 is exist!!"
  9. ret 1 "create user is "
  10. continue
  11. fi
  12. }
  13. ret() {
  14. if [ $1 -eq 0 ];then
  15. action "$2" /bin/true
  16. else
  17. action "$2" /bin/false
  18. fi
  19. }
  20. create() {
  21. for i in $(seq -w 10)
  22. do
  23. user="oldboy$i"
  24. isexist $user
  25. pass=$(cat /proc/sys/kernel/random/uuid|md5sum|cut -c 1-10)
  26. useradd $user&&echo $pass|passwd --stdin $user &>/dev/null
  27. ret $? "crate user $user"
  28. echo "$user $pass" >> /tmp/user.list
  29. done
  30. }
  31. main() {
  32. create
  33. }
  34. 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 进行截取,这样就可以实现了。



  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值