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
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