在linux中,可以写脚本来生成随机密码,用于批量管理linux系统账号。
本节介绍一个好用的linux随机密码生成工具mkpasswd,有了它,生成随机密码的工作,将变得更加轻松。
例1、普通shell/ target=_blank class=infotextkey>shell脚本生成随机密码的方法。
#!/bin/bash
declare -a chars
declare -a nums
chars=(a 1 A b B / c 2 C d D e 3 E f F g . G 4 h H i I g G 5 k K l L m M 6 n N o O p 7 + P q Q R s 8 S t T - u U v 9 V w W x X _ y 0 Y z Z / . + - _)
nums=(0 1 2 3 4 5 6 7 8 9)
echo -n "X"
for ((count=0;count<=13;count++))
do
RA=`expr $RANDOM % 5000`
#RA1=`expr $RANDOM % 10000`
N_TIME=`expr $RANDOM % 10000`
G_NUM=$[${N_TIME}%71]
G_NUM2=$[${RA}%71]
if [ $[${count}%2] -eq 0 ]
then
echo -n ${chars[$G_NUM]}
else
echo -n ${chars[$G_NUM2]}
fi
done
echo "J"
以上脚本生成一个16位的随机密码。
此脚本的缺点:密码规则需要在脚本里指定,不是很方便。
在linux中有个强大的随机密码工具mkpasswd,此命令是用来给用户修改密码的。
这里教大家使用它生成随机密码,只要后面不加用户这个参数,就可以用来生成密码了,而且密码强度可以随意调整。
注意,mkpasswd如果不存在的话,可以通过安装expect来得到,安装方法参考:linux随机密码生成工具mkpasswd安装与使用教程
用法如下:
参数:
-l # (密码的长度定义, 默认是 9)
-d # (数字个数, 默认是 16)
-c # (小写字符个数, 默认是 3)
-C # (大写字符个数, 默认是 2)
-s # (特殊字符个数, 默认是 1)
-v (详细。。。)
-p prog (程序设置密码, 默认是 passwd)
来看mkpasswd工具生成随机密码的一些例子。
例子:
[root@fbl_haiou ~]# mkpasswd -l 10 -d 5 -c 5 -C 0 -s 0
5t91mk66vu
#生成10位随机密码,只有数字和小写字母。要注意上面的用法,需要把-C和-s设置为0。
[root@fbl_haiou ~]# mkpasswd -l 10 -d 0 -C 7 -c 0 -s 3
B/LILUKQ?+
#生成10位随机密码,只包含大写字母和特殊字符。
linux自动生成密码工具mkpasswd用法
mkpasswd - 为用户产生新口令
mkpasswd [ args ] [ user ]
mkpasswd 为用户产生口令并自动应用。它是基于O'Reilly的书 《Exploring Expect》 第23章中的代码的。
mkpasswd命令的用法
不带参数的话, mkpasswd 返回一个新口令。带上用户名的话, mkpasswd 为该用户分配一个新口令。
根据以下的标志可以随机性的产生口令。
标志(常用参数):
-l 标志定义口令长度。缺省值为9。以下示例建立一个20位的口令。
mkpasswd -l 20
-d 标志定义口令必须包含的最少数字位数。缺省值为2。以下示例建立一个含3位数字的口令。
mkpasswd -d 3
-c 标志定义口令必须包含的最少小写字母个数。缺省值为2。
-C 标志定义口令必须包含的最少大写字母个数。缺省值也是2。
The -s flag defines the minimum number of special characters that must be in the password. The default is 1.
-p 标志标明设立口令的程序。如果/etc/yppasswd存在的话则它为缺省值,否则就用/bin/passwd。
-2 标志交换键盘上左右手的字母(我想就是左手输入g则为h吧),以使别人更难监视输入的口令。这也使口令猜测程序更容易成功。(这句不懂,请高手指教!)
-v 使设定口令的交互可见,但缺省是不可见的。
例子,使用mkpasswd命令建立一个15位包含至少3位数字和5位大写字符的口令。