shell 生成隨機數和隨機字符串

一、生成隨機數:
[root@73 ~]# echo $RANDOM
32641
[root@73 ~]# echo $RANDOM
9753
[root@73 ~]# echo $RANDOM
710
注:獲得的這個隨機數是介於 0~32767 之間的一個整數。

二、生成隨機字符串
a、[root@73 ~]# head -n 5 /dev/urandom |sed 's/[^a-Z0-9]//g'|strings -n 4
fEVN
Lfkm0
PMSZfO
tEIw
aKbc
MWLTk1
注:生成由a-Z和0-9組成的字符串。

b、[root@73 ~]# openssl passwd -stdin < <(echo)
5LYYPmuNIFS9c

c、[root@73 ~]# head -n 5 /dev/urandom |strings -n 5
]bE&O
p\#P6C
_\I[K
C3Hn2,=
$JfV5q
{8tD)
zG}Uw

注:
strings:
在對象文件或二進制文件中查找可打印的字符串。
語法:
語法
strings [ -a ] [ - ] [ -o ] [ -t Format ] [ -n Number ] [ -Number ] [ File ... ]
參數:
-a 或 - 搜索整個文件,而不單單是數據段,以尋找可打印的字符串。若是省略這個標誌,則 strings 命令只在對象文件的初始化數據空間內尋找。

-n Number 指定最小的字符串長度(除了缺省的 4 個字符之外)。字符串長度的最大值是 4096。這個標誌與 -Number 標誌相同。
-o 列出文件中每一個跟隨在其八進制偏移量以後的字符串。這個標誌與 -t o 標誌相同。
-t Format 列出從文件最開始起,每一個跟隨在其偏移量以後的字符串。該格式取決於用做 Format 變量的字符。 
d
以十進制寫下偏移量。 
o
以八進制寫下偏移量。 
x
以十六進制寫下偏移量。 
注:當 -o 和 -t Format 標誌在一個命令行上屢次定義,則最後指定的標誌控制 strings 命令的行爲。
-Number 指定最小的字符串長度(除了缺省的 4 個字符之外)。字符串長度的最大值是 4096。這個標誌與 -n Number 標誌相同。
File 要搜索的二進制文件或對象文件。

退出狀態
該命令返回如下退出值:
0 表示命令成功運行。
php

>0 表示出錯。 html

三、從指定字符集和中生成隨機字符串: linux

#!/bin/bash
MATRIX="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz~!@#$%^&*()_+="
LENGTH="9"
while [ "${n:=1}" -le "$LENGTH" ]
do
        PASS="$PASS${MATRIX:$(($RANDOM%${#MATRIX})):1}"
        let n+=1
done
        echo "$PASS"
shell

exit 0 centos

四、經過時間得到隨機數(date) bash

[chengmo@centos5  shell]$date +%s%N
1287764807051101270

#這個能夠說比較完美了,加入了時間戳,又加上了納秒 dom

五、經過系統內部惟一數據生成隨機數(/dev/random,urandom) 函數

[chengmo@centos5  shell]$head -1/dev/urandom
ãņù…•KTþçanVÕã¹Û&¡õ¾「ô2íùU「 žF¦_ ÿ」†mEðûUráÏ=J¯TŸA•ÌAÚRtÓ
 
#讀一行,怎麼是亂碼呢?其實它是經過二進制數據保存實時數據的,那麼咱們怎麼樣把它變成整型數據呢?
 
 
[chengmo@centos5 ~/shell]$head -200/dev/urandom | cksum
1615228479 50333
#因爲urandom的數據是很是多,不能直接經過cat讀取,這裏取前200行,其實整個數據都是變化的,取多少也同樣是惟一的。

#cksum 將讀取文件內容,生成惟一的表示整型數據,只有文件內容不變,生成結果就不會變化,與php crc函數 ui

六、讀取linux 的uuid碼 spa

[chengmo@centos5 ~/shell]$cat /proc/sys/kernel/random/uuid| cksum |cut -f1 -d" "
2141807556

——————————————————————————————————————————————————————

REF:

http://huoxiubo.blog.51cto.com/2025919/745909

http://lihuipeng007.blog.163.com/blog/static/121084388201062351340826/

http://www.cnblogs.com/chengmo/archive/2010/10/23/1858879.html

Linux 系統中隨機數在 KVM 中的應用  http://blog.jobbole.com/65689/

利用 Linux 系統生成隨機密碼的10種方法  http://blog.sae.sina.com.cn/archives/5037

相關文章
相關標籤/搜索