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

@lianst  August 28, 2017

一般在写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

6.dev方法

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

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


添加新评论