Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2503467
  • 博文数量: 540
  • 博客积分: 11289
  • 博客等级: 上将
  • 技术积分: 6160
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-11 20:27
个人简介

潜龙勿用,见龙在田

文章分类

全部博文(540)

文章存档

2018年(2)

2013年(5)

2012年(24)

2011年(104)

2010年(60)

2009年(217)

2008年(128)

分类: 系统运维

2018-11-12 17:25:23

1. $RANDOM
shell中有一个变量$RANDOM 能够生成随机的数字,范围是0~32767[2^15],大概率基本上是4~5位数字。
取0~99之间的数:echo "$((${RANDOM}%100))"
2. /dev/urandom
/dev/random存储系统当前运行的环境的实时数据,可以看作系统某时候的唯一值数据,提供优质随机数。一般使用不推荐
/dev/urandom是非阻塞的随机字符产生器,读取时不会产生阻塞,速度更快、安全性较差的随机数发生器。推荐
因为/dev/urandom生成有许多乱码,因此需要得到你想要的字符串必须加以处理再输出。比如你希望只输出字母和数字组合的随机字符串:
cat /dev/urandom|head -n10|tr -dc 'a-zA-Z0-9'        tr -dc 表示指定输出哪些字符
生成四位随机验证码[各种登录验证广泛使用]:
head /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c 4
head /dev/urandom | tr -dc 'a-zA-Z0-9' | cut -c1-4
tr -dc 'a-zA-Z0-9'命令可以指定输出哪些字符种类
head /dev/urandom | md5sum | cut -c1-4        # 经过md5sum算法之后只有小写字母和数字两种字符
PS: 这里补充一下取几位字符的方法。head -c 4/tail -c 4/cut -c1-4,其中head和tail中的-c参数指的是字节数,而cut 里的-c才是指的字符数。如果都是ASCII码,一个字符就是一个字节,但是如果有非ASCII字符那就不相等了。
3. uuid
UUID码全称是通用唯一识别码 (Universally Unique Identifier, UUID),UUID格式是:包含32个16进制数字,以“-”连接号分为五段,形式为8-4-4-4-12的32个字符。linux的uuid码也是有内核提供的,在/proc/sys/kernel/random/uuid这个文件内。cat/proc/sys/kernel/random/uuid每次获取到的数据都会不同
也可以使用uuidgen工具
uuidgen | md5sum | cut -c 1-4        #输出小写字母和数字的组合
uuidgen | cksum | cut -c 1-4            #cksum表示只生成数字

就介绍这几种方法,记住一两种就可以了。记住下面两条就行
head /dev/urandom | tr -dc 'a-zA-Z0-9' | cut -c1-4
cksum表示只取整数
阅读(1326) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~