前言
运维过程中经常需要用到随机密码, 例如服务器, MySQL,Redis 等密码的设置, 用随机密码会相对安全一点. 这里使用 Python 来实现一个随机密码生成器
认识 random 模块
random 模块可以从多个字符中随机先出一个字符, 我们可以把所有数字放到一个字符串里, random.choice 能够从中随机选出一个数字, 如下
- >>> import random
- >>> random.choice('1234567890')
- '9'
- >>> random.choice('1234567890')
- '2'
写个循环随机生成
假如我们需要生成 30 位随机密码, 包含数字, 大小写字母, 特殊符号. 我们可分为四种, 然后随机生成并且放到列表里, 程序如下:
- import random
- result = []
- for i in range(0, 20):
- if i % 4 == 0:
- result.append(random.choice('1234567890'))
- if i % 4 == 1:
- result.append(random.choice('abcdefghijklmnopqrstuvwxyz'))
- if i % 4 == 2:
- result.append(random.choice('ABCDEFGHIJKLMNOPQRSTUVWXYZ'))
- if i % 4 == 3:
- result.append(random.choice('!$%()+,-.:;>[email protected][]`{}'))
- print("".join(result))
执行结果如下:
- [[email protected] root]# python /tmp/shijiange.py
- 0iQ+3eC]5oA}[email protected]:
- [[email protected] root]# python /tmp/shijiange.py
- 0qX>9cG-4pY`3tT.0gN`
- [[email protected] root]# python /tmp/shijiange.py
- 1xN%3rG{
- 6aA]0cD.2nL-
- [[email protected] root]# python /tmp/shijiange.py
- 5jB]1xA]2yW,5vM:0bH%
把随机密码打乱
由于循环生成的密码, 第一个是数字, 第二个是小写字母, 第三个是大写字母, 第四个是字符. 虽然比较复杂, 但有点规律, 我们可以把 20 个字母随机打乱.
- import random
- result = []
- for i in range(0, 20):
- if i % 4 == 0:
- result.append(random.choice('1234567890'))
- if i % 4 == 1:
- result.append(random.choice('abcdefghijklmnopqrstuvwxyz'))
- if i % 4 == 2:
- result.append(random.choice('ABCDEFGHIJKLMNOPQRSTUVWXYZ'))
- if i % 4 == 3:
- result.append(random.choice('!$%()+,-.:;>[email protected][]`{}'))
- random.shuffle(result)
- print("".join(result))
随机生成密码, 运行结果如下, 每次运行都生成随机密码:
- [[email protected] ~]# python /tmp/shijiange.py
- h27;XMo$w;lpAQ7:J.08
- [[email protected] ~]# python /tmp/shijiange.py
- 1ptQ%8c:ED7C8[m$(7yD
- [[email protected] ~]# python /tmp/shijiange.py
- `ri0+(CwP3Wd0P}-4Yj2
- [[email protected] ~]# python /tmp/shijiange.py
- qLcJ-F2>)S0K11{
- fq$q8
跟着实践哥学习 Python, 从实践中掌握 Python 技术, 可免费试听两集:
https://edu.51cto.com/sd/b72ab https://edu.51cto.com/sd/b72ab
来源: http://www.bubuko.com/infodetail-3149018.html