linux 获取随机数的办法

1.1.1 inux随机数的办法  http://www.2cto.com/kf/201410/342717.html

方法一.[[email protected] ~]# date +%N  %N纳秒  随机获取的九位数通过时间

823015723

通过时间获得随机数(date)

date +%s%N #生成19位数字,1287764807051101270

date +%s%N | cut -c6-13 #取八位数字,21793709

date +%s%N | md5sum | head -c 8 #八位字母和数字的组合,87022fda

方法二.[[email protected] ~]# echo $RANDOM

24215

生成0-32767之间的整数随机数,若超过5位可以加个固定10位整数,然后进行求余。

生成400000~500000的随机数:

#!/bin/bash

function rand(){

min=$1

max=$(($2-$min+1))

num=$(($RANDOM+1000000000)) #增加一个10位的数再求余

echo $(($num%$max+$min))

}

rnd=$(rand 400000 500000)

echo $rnd

exit 0

方法三:使用awk的随机函数

awk ‘BEGIN{srand();print rand()*1000000}‘ #可以加上if判断,779644

方法四openssl rand产生随机数

openssl rand 用于产生指定长度个bytes的随机字符。-base64或-hex对随机字符串进行base64编码或用hex格式显示。

openssl rand -base64 8 | md5sum | cut -c1-8 #八位字母和数字的组合,3a61800e

openssl rand -base64 8 | cksum | cut -c1-8 #八位数字,10784736

方法五

(5)通过系统内唯一数据生成随机数(/dev/random及/dev/urandom)

/dev/random存储系统当前运行的环境的实时数据,可以看作系统某时候的唯一值数据,提供优质随机数。

/dev/urandom是非阻塞的随机数产生器,读取时不会产生阻塞,速度更快、安全性较差的随机数发生器。

cat /dev/urandom | head -n 10 | md5sum | head -c 10 #32f1e953ac

cat /dev/urandom | strings -n 8 | head -n 1 #生成全字符的随机字符串,08?WU$ZU

cat /dev/urandom | sed -e ‘s/[^a-zA-Z0-9]//g‘ | strings -n 8 | head -n 1 #生成数字加字母的随机字符串,Ql2q9CXS

其中 strings -n设置字符串的字符数,head -n设置输出的行数。

head-200/dev/urandom| cksum |cut-d" " -f1 #urandom的数据很多使用cat会比较慢,在此使用head读200行,cksum将读取文件内容生成唯一的表示整型数据,cut以” “分割然后得到分割的第一个字段数据

(6)读取linux的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每次获取到的数据都会不同。

cat /proc/sys/kernel/random/uuid| cksum | cut -f1 -d" " #获取不同的随机整数,1675034933

cat /proc/sys/kernel/random/uuid| md5sum | cut -c1-8 #数字加字母的随机数,d69a7ebf

使用linux uuid 生成100~500随机数:

#!/bin/bash

function rand(){

min=$1

max=$(($2-$min+1))

num=$(cat /proc/sys/kernel/random/uuid | cksum | awk -F ‘ ‘ ‘{print $1}‘)

echo $(($num%$max+$min))

}

rnd=$(rand 100 500)

echo $rnd

exit 0

(7)从元素池中随机抽取取

pool=(a b c d e f g h i j k l m n o p q r s t 1 2 3 4 5 6 7 8 9 10)

num=${#pool[*]}

result=${pool[$((RANDOM%num))]}

61b53abd4e1eee16cb7966ccb2aa89da  -

[[email protected] ~]# date +%N|md5sum|cut -c 6-13

e2d802fb

[[email protected] ~]# echo `date +%N|md5sum|cut -c 6-13`

8ba21fee

[[email protected] ~]# echo `date +%N|md5sum|cut -c 6-13`|passwd stud{1..8}^C

[[email protected] ~]# useradd std{1..5}

232随机创建密码

时间: 2024-10-10 17:57:27

linux 获取随机数的办法的相关文章

linux获取随机数的方法集合

linux产生随机的方法 取8位数字的方法 [[email protected] scripts]# echo $RANDOM 12465 [[email protected] scripts]# echo $((RANDOM+10000000)) 10023190 [[email protected] scripts]# echo $RANDOM | md5sum | cut -c 1-8 ae74cedb [[email protected] scripts]# uuidgen| md5su

linux获取daemon进程的控制台数据

linux提供了一个daemon函数,使得进程可以脱离控制台运行,实现了后台运行的效果.但是进程后台运行后,原本在终端控制台输出的数据就看不到了.那么,怎样才能找回这些数据? 这里,文章主题就围绕着 如何获得后台进程的控制台数据,其中的原理要从daemon说起. daemon主要做两件事: 1.创建子进程,退出当前进程,并且以子进程创建新会话.这样,就算父进程退出,子进程也不会被关闭 2.将标准输入,标准输出,标准错误都重定向/dev/null daemon 实现大致如下: int daemon

linux获取后台进程的控制台数据

linux提供了一个daemon函数,使得进程能够脱离控制台执行,实现了后台执行的效果.可是进程后台执行后,原本在终端控制台输出的数据就看不到了. 那么,如何才干找回这些数据? 这里.文章主题就环绕着 如何获得后台进程的控制台数据,当中的原理要从daemon说起. daemon主要做两件事: 1.创建子进程,退出当前进程,而且以子进程创建新会话.这样,就算父进程退出,子进程也不会被关闭 2.将标准输入.标准输出,标准错误都重定向/dev/null daemon 实现大致例如以下: int dae

(48)LINUX应用编程和网络编程之三Linux获取系统信息

3.3.1.关于时间的概念 3.3.1.1.GMT时间 (1)GMT是格林尼治时间,也就是格林尼治地区的当地之间. (2)GMT时间的意义?[用格林尼治的当地时间作为全球国际时间],用以描述全球性的事件的时间,方便大家记忆 (3)一般为了方便,一个国家都统一使用一个当地时间. 3.3.1.2.UTC时间 (1)GMT时间是以前使用的,使用天文来测试的,近些年来越来越多的使用UTC原子钟时间. (2)关于北京时间,可以参考:http://www.cnblogs.com/qiuyi21/archiv

技巧-Linux内核参数调整办法

技巧 -Linux内核参数调整办法 ulimit设置 ulimit -n 要调整为100000甚至更大. 命令行下执行 ulimit -n 100000即可修改.如果不能修改,需要设置 /etc/security/limits.conf,加入 * soft nofile 262140 * hard nofile 262140 root soft nofile 262140 root hard nofile 262140 * soft core unlimited * hard core unli

linux获取目录下文件

查看当前目录下的文件:find . -type f查看当前目录下的文件夹: find . -type d如果文件file1不为空: if [ -s file1 ];then       echo "file1 不为空"fi #!/bin/sh for f in `find ./testdir -type f`; do         if [ -s $f ];then                 echo $f is not empty.                 echo 

PHP获取随机数的函数rand()和mt_rand()

rand()函数用户获取随机数,具体用法如下: rand()可以设置0个参数或者两个参数,如rand($min,$max),$min表示从XX开始取值,$max表示最大只能为XX 例如: <?php echo rand() . "\n";//得到一个不定位数的随机数 echo rand(5, 15);//在5~15之间取一个数 ?> mt_rand() 用法跟rand()类似,但是mt_rand()的执行效率更高,平常使用也推荐用mt_rand(). 博客原文:PHP获取随

Linux获取网络接口信息

linux获取网络接口信息需要用到的函数为ioctl(),结构体struct ifreq,struct ifconf 1.ioctl()函数原型及作用 1 #include <sys/ioctl.h> 2 3 int ioctl(int d, int request, ...); 4 5 //参数 6 //int d:是一个文件描述符 7 //int request :表示要请求的信息.如IP地址.网络掩码等 8 //......:可变参数,根据request而定 下面是ioctl请求的req

linux获取CPU温度

Centos系列 1 yum install lm_sensors 2 sensors-detect 3 sensors Ubuntu系列(多了service module-init-tools start一步骤) 1 apt-get install lm-sensors 2 sensors-detect 3 service module-init-tools start 4 sensors 也可以通过sys系统读取cpu的温度: /sys/class/hwmon/hwmon0/device/