shell脚本随机数生成方式
losetowin 发布于:2016-1-13 0:10 分类:linux 有 6697 人浏览,获得评论 2 条 标签: linux shell 随机数
本文地址:http://www.dutycode.com/shell_suijishu_shengcheng.html
除非注明,文章均为 www.dutycode.com 原创,欢迎转载!转载请注明本文地址,谢谢。
除非注明,文章均为 www.dutycode.com 原创,欢迎转载!转载请注明本文地址,谢谢。
起因:
新建了博客,需要给一部分用户创建用户名和密码,如果再使用Java程序去做,稍显笨重。因为只需要一次,后续就不需要再创建了。所以,初步打算使用shell来做,轻量级的。
但是,密码不能是一样的,原因在于,如果密码都一样,就容易出现盗号的情况了。也就没有了密码本来该具有的含义。
所以,需要将密码随机生成。
So,问题来了,shell怎么随机生成随机数呢
解决方式:
PS:解决方式,来自于网络搜索,文末会附属上原文连接。
最直接想到的方式,自然是时间戳了。
1、不能使用秒级别的,原因在于,多线程或者运行速度较快时,容易出现相同的情况。
2、可以使用纳秒级别的。基本上不会出现冲突。
[root@AY1312180952417614c9Z ~]# date +"%s%N" 1452613725761954178
BTW: OSX系统下,是不能使用%N这个格式化方式的。
那,如果想指定一个范围内的随机数怎么实现?看下面代码。可以自定一个函数。
#!/bin/bash function getRandom(){ begin=$1; end=$2; numrange=${end}-${begin} randomnum=`date +"%s%N"` ((retnum=randomnum%numrange+min)) echo $retnum; ##通过echo打印出结果,可以用做返回值。 } num=`getRandom 1 100` ##生成1-100之间的随机数 echo $num
运行下,可以看到结果。
还有其他办法吗?
当然有,Linux本身存在一个随机数变量,可以直接使用。
随机数变量: $RANDOM
[root@AY1312180952417614c9Z ~]# echo $RANDOM 27176 [root@AY1312180952417614c9Z ~]# echo $RANDOM 4823
方法三:
可以使用AWK来生成随机数,使用awk里面的函数。
awk 'BEGIN{srand();print rand()}'
方法四:
使用linux的一些设备 /dev/random 和 /dev/urandom 信息来做随机数.
/dev/random 和 /dev/urandom 里面存储的是当前运行环境的实时数据,可以看作是一个随机数,
[root@AY1312180952417614c9Z ~]# head -100 /dev/urandom | cksum | cut -f1 -d" " 1327000850
这里涉及到一个linux命令,cksum,使用方式和介绍可以看这里:http://blog.chinaunix.net/uid-10257388-id-2967638.html
参考文章:
版权所有:《攀爬蜗牛》 => 《shell脚本随机数生成方式》
本文地址:https://www.dutycode.com/shell_suijishu_shengcheng.html
除非注明,文章均为 《攀爬蜗牛》 原创,欢迎转载!转载请注明本文地址,谢谢。