Shell脚本打卡30day---day7(产生随机数)

Linux系统产生随机数的6种方法:

  • 通过系统变量"$RANDOM"实现:
[root@mycentos7 ~] # echo $RANDOM
20081
[root@mycentos7 ~] # echo $RANDOM
26946
  • 通过openssl产生随机数实现:
[root@mycentos7 ~] # openssl rand -base64 8
cpe34omgO1E=
[root@mycentos7 ~] # openssl rand -base64 10
9VO3vqRH3b4Ouw==
#rand参数:产生伪随机数
/*
    -base64:是一种编码方式,就像ASCII编码。-base64使用的是64个可读字符进行编码,这些字符是:
          数字:0,1,2,3,4,5,6,7,8,9,共10个
          小写字母: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,共26个
          大写字母: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,共26个
          加"+"以及斜杠"/"
*/   
#8、10这些数字是rand参数产生随机数所需要的seed(传递给rand参数的实现函数)
#openssl rand 也可以使用"-Hex"十六进制的编码方式

/* 
    Linux系统中也有"base64"命令。用于加密和解密相应的字符串:
      加密:
         [root@mycentos7 ~] # echo "hello world" | base64
         aGVsbG8gd29ybGQK
      解密:
         [root@mycentos7 ~] # echo "aGVsbG8gd29ybGQK" | base64 -d
         hello world
 
*/
  • 通过时间"date"获得随机数实现:
[root@mycentos7 ~] # date "+%s%N"
1606476519773106477
[root@mycentos7 ~] # date "+%s%N"
1606476523772867099
  • 通过"/dev/urandom"配合cksum生成随机数:
[root@mycentos7 ~] # head /dev/urandom |cksum
1851088173 1878
[root@mycentos7 ~] # head /dev/urandom |cksum
2168688483 2291   #2168688483是CRC校验码    2291是字节数
/*
   /dev/urandom文件存储着系统当前运行环境的实时数据。它可以看作系统在某个时刻的唯一值,因此可以用作随机数源数据。我们可以通过文件读取的方式,读到里面的数据。
   cksum命令检查文件的CRC检验码是否正确。可以通过cksum命令对文件产生一个CRC校验码;   
*/
  • 通过UUID生成随机数实现:
[root@mycentos7 ~] # cat /proc/sys/kernel/random/uuid 
0186c379-75e0-4bdd-9cad-d7d71e9938d6
[root@mycentos7 ~] # cat /proc/sys/kernel/random/uuid 
6bc0042f-cd57-4913-b6b8-a5a940b983ad
#每次查看"/proc/sys/kernel/random/uuid",系统内核就会根据实时数据生成一个随机串码

  • 使用expect附带的mkpasswd命令生成随机数:
[root@mycentos7 ~] # mkpasswd -l 9 -d 2 -c 3 -C 3 -s 1
ySsgNF26\
[root@mycentos7 ~] # mkpasswd -l 9 -d 2 -c 3 -C 3 -s 1
od16SHuN^
[root@mycentos7 ~] # mkpasswd -l 9 -d 2 -c 3 -C 3 -s 1
3B-AR2efu
# -l:指定密码长度
# -d:指定密码中数字的数量
# -c:指定密码中小写字母的数量
# -C:指定密码中大写字母的数量
# -s:指定密码中特殊字符的数量

以上方式产生的随机数长度不一,可通过"md5sum"加密,然后"cut -c" 截取自己想要的长度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值