先说一下mkpasswd
linux里是自带生成密码的命令的,比较出名的一个是mkpasswd
,另一个是passwdgen
。
mkpasswd
命令是附属在expect
模块里的,如图
passwdgen
的话也要手动执行一下yum install -y passwdgen
来安装命令。
这里主要说说mkpasswd
,它支持如下几个参数:
1
2
3
4
5-l (length of password, default = 7) 指定密码的长度,默认是7位数
-d (min # of digits, default = 2) 指定密码中数字最少位数,默认是2位
-c (min # of lowercase chars, default = 2) 指定密码中小写字母最少位数,默认是2位
-C (min # of uppercase chars, default = 2) 指定密码中大写字母最少位数,默认是2位
-s (min # of special chars, default = 1) 指定密码中特殊字符最少位数,默认是1位
比如现在要生成一个含有“六位数字而且5位特殊字符的总共16位”的密码,那么命令就是:mkpasswd -l 16 -d 5 -s 5
,再聚几个其他的例子,感受一下:
1
2
3
4
5
6
7
8[root@zabbix General_LeChange_Chn_IS_V5.8.00.R.20170814]# mkpasswd -l 16 -d 5 -s 5
g]7Hu-L5,t+32%0m
[root@zabbix General_LeChange_Chn_IS_V5.8.00.R.20170814]# mkpasswd -l 16 -C 5
YvjtFWaV5jr8h%Wy
[root@zabbix General_LeChange_Chn_IS_V5.8.00.R.20170814]# mkpasswd -l 16 -s 10
qoB#^V_=/!??*59:
[root@zabbix General_LeChange_Chn_IS_V5.8.00.R.20170814]# mkpasswd -l 16 -c 4
9mJOqymatvg*n9sl
脚本在此
这个生成随机码的算法部分就使用上面那个mkpasswd
了,省了我们不少事。
整个html界面的代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>随机密码生成器</title>
</head>
<body>
<form action="/cgi-bin/dropdown.py" method="post" target="_blank">
<select name="dropdown">
<h2>密码长度:</h2><option value="8" selected>8</option>
<option value="16">16</option>
<option value="20">20</option>
<option value="24">24</option>
<option value="48">48</option>
</select> <br />
<input type="checkbox" name="runoob" value="on" /> 包含小写字母 <br />
<input type="checkbox" name="google" value="on" /> 包含大写字母 <br />
<input type="checkbox" name="runoob" value="on" /> 包含数字 <br />
<input type="checkbox" name="google" value="on" /> 包含特殊字母 <br />
<input type="submit" value="提交"/> <br />
<h2>密码:</h2>
</form>
</body>
</html>
补充
再分享一个python生成密码的代码,但是这个密码不含特殊字符:
1
2
3
4
5
6
7
8
# -*- coding: utf-8 -*-
import random
import string
salt = ''.join(random.sample(string.ascii_letters + string.digits, 8))
print salt
参考资料
https://balajiommudali.wordpress.com/2015/11/27/unable-to-install-mkpasswd-on-centos-6-4/
http://www.runoob.com/python/python-cgi.html