shell生成随机字符的几种方法

一般在写shell脚本的时候,会有需要生成一些随机字符,比如在写批量生成用户+随机密码的脚本的时候,就会用到随机生成的字符串来作为新建用户的密码。以下的几种方式可以随机生成字符串。当然,还要许多方法都能完成文章标题的目的,这里仅列举出来部分的。

1.使用shell的random变量

[root@virmach ~]# echo $RANDOM 
1908

2.使用openssl

[root@virmach ~]# openssl rand -base64 8 # 8是8位的意思
K0NYLr0u0Xo=

3.random+openssl混合

[root@virmach ~]# echo $RANDOM `openssl rand -base64 8`
20446 +A7KGgNfPLc=

4.mkpasswd方法

[root@virmach ~]# yum -y install expect 
[root@virmach ~]# mkpasswd -l 8
Ykv{b12R

5.uuid方法

[root@virmach ~]# cat /proc/sys/kernel/random/uuid  | md5sum |cut -c 1-9  # 1-9 取8位,最后的9是结束。
362b84efe

注:
md5sum是一种计算机程序,用于计算与校验RFC 1321所描述的128位MD5哈希值,此处MD5散列值(或校验和)作一个文件的数字指纹使用。

MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改。MD5 全称是报文摘要算法(Message-Digest Algorithm 5),此算法对任意长度的信息逐位进行计算,产生一个二进制长度为128位(十六进制长度就是32位)的“指纹”(或称“报文摘要”),不同的文件产生相同的报文摘要的可能性是非常非常之小的。

6.dev方法

[root@virmach ~]# head /dev/urandom |cksum |md5sum |cut -c 1-9
89da0c70b

注:
cksum命令是检查文件的CRC是否正确,确保文件从一个系统传输到另一个系统的过程中不被损坏。这种方法要求校验和在源系统中被计算出来,在目的系统中又被计算一次,两个数字进行比较,如果校验和相等,则该文件被认为是正确传输了。

CRC是指一种排错检查方法,即循环冗余校验法。

7.date日期方法

[root@virmach ~]# date +%s%N | md5sum |cut -c 1-9
4738152c2

8.for循环方法

[root@virmach ~]# for i in `seq 20`;do date +%s%N | md5sum | cut -c 1-9;done | sort | uniq -c | sort -rn -k1
      1 fa39a560c
      1 ecd4ceffd
      1 d55c46cbc
      1 cb62000bd
      1 c59bd7c47
      1 c3184203f
      1 b425ea72d
      1 9a7862d2c
      1 89937f1f6
      1 77ada8ace
      1 64b21e854
      1 5d846676c
      1 5531089be
      1 539eeb6f1
      1 31b408a3d
      1 3121ec947
      1 2cf29525f
      1 0c4896052
      1 0a50fe20f
      1 085964e34
[root@virmach ~]# for i in `seq 20`;do echo $RANDOM | md5sum | cut -c 1-9 ;done | sort | uniq -c | sort -rn -k1 
      1 f5e451aa0
      1 dda67bca5
      1 d0e33a01c
      1 cadd4e4b2
      1 bd3c38da5
      1 bafa3dae3
      1 b558cb841
      1 a9a2bc409
      1 a8741275b
      1 9ed3345eb
      1 781e1b49e
      1 74e440e32
      1 5ab403a0f
      1 4df853e04
      1 4dbe8c068
      1 3044e58f9
      1 21daea994
      1 0eb55df9e
      1 0c9d59d9b
      1 022520557

标签: none

添加新评论