在运维过程中可能会使用随机密码,下面说说用Python来生成指定长度的随机密码。
方法说明: test_pass_generate(int(sys.argv[1]), int(sys.argv[2]))
参数1为生成密码个数
参数2为生成密码长度
另外代码生成的密码不包括数字0,字母O,大小写的L,避免难以分辨。
# coding: utf-8
import random
import string
import sys,os
def generate_random_pass(pass_len=10):
lowercase = 'abcdefghijkmnpqrstuvwxyz'
uppercase = 'ABCDEFGHJKLMNPQRSTUVWXYZ'
digits = '23456789'
special = '_!@#$%&*'
PASS_CHARS = lowercase+uppercase+digits+special
"""
生成指定长度的密码字符串,当密码长度超过3时,密码中至少包含:
1个大写字母+1个小写字母+1个特殊字符
:param password_length:密码字符串的长度
:return:密码字符串
"""
char_list = [
random.choice(lowercase),
random.choice(uppercase),
random.choice(digits),
random.choice(special)
]
if pass_len > 4:
# random.choice 方法返回一个列表,元组或字符串的随机项
# (x for x in range(N))返回一个Generator对象
# [x for x in range(N)] 返回List对象
char_list.extend([random.choice(PASS_CHARS) for _ in range(pass_len - 4)])
# 使用random.shuffle来将list中元素打乱
random.shuffle(char_list)
return ''.join(char_list[0:pass_len])
def test_pass_generate(pass_num,pass_len):
ls=[]
for i in range(pass_num):
random_pass = generate_random_pass(pass_len)
if random_pass not in ls:
ls.append(random_pass)
path=os.path.join(os.path.expanduser('~'),"Desktop",'生成密码.txt')
f = open(path,'w')
for i in ls:
print(i) #不想写入文件可以直接输出
f.write(i+'\n')
f.close()
test_pass_generate(int(sys.argv[1]), int(sys.argv[2]))
使用方法举例:
生成5个长度为7位的随机密码 ,另外如果在windows上执行,代码同时会在桌面上生成结果文件。如下:
#python genpass.py 5 7
egP4#vQ
zP7J!C$
2c@PKTC
fcB5iT&
Kup7$&Y
将上述代码生成windows 的.exe可执行文件:
将Python文件编译成exe可执行文件,可使用pyinstaller工具或py2exe工具实现。这里使用pyinstaller来说明。
一、使用pip安装pyinstaller模块
pip install pyinstaller
Collecting pyinstaller
Downloading PyInstaller-3.3.tar.gz (3.5MB)
100% |████████████████████████████████| 3.5MB 383kB/s
Requirement already satisfied: setuptools in
Successfully built pyinstaller pefile future
Installing collected packages: future, pefile, altgraph, macholib, pypiwin32, pyinstaller
Successfully installed altgraph-0.15 future-0.16.0 macholib-1.9 pefile-2017.11.5 pyinstaller-3.3 pypiwin32-220
二、生成exe文件
准备好需要编译成exe的Python文件
在这个Python文件的当前路径执行pyinstaller -F xxx.py(xxx为Python代码文件名)
控制台会打印编译信息,最后会打印编译成功,表示生成exe文件成功
PS C:\Users\csits\Desktop> pyinstaller.exe -F .\genpass.py
154 INFO: PyInstaller: 4.2
154 INFO: Python: 3.6.3
155 INFO: Platform: Windows-10-10.0.19041-SP0
158 INFO: wrote C:\Users\csits\Desktop\genpass.spec
169 INFO: UPX is not available.
14190 INFO: Bootloader c:\users\csits\appdata\local\programs\python\python36\lib\site-packages\PyInstaller\bootloader\Windows-64bit\run.exe
14190 INFO: checking EXE
14204 INFO: Writing RT_ICON 7 resource with 1128 bytes
14213 INFO: Updating manifest in C:\Users\csits\Desktop\build\genpass\run.exe.b10_rizh
14217 INFO: Updating resource type 24 name 1 language 0
14224 INFO: Appending archive to EXE C:\Users\csits\Desktop\dist\genpass.exe
14235 INFO: Building EXE from EXE-00.toc completed successfully.
三、当前目录下会多出一个dist目录,此目录下就是Python文件生成的exe可执行文件。使用exe文件加相关参数生成密码:
C:\>C:\genpass.exe 10 5
Spu&8
B!$u5
3$M6d
*e7hP
iUV7*
Et35$
4P_ax
Yk4!V
n&28U
R2f%h
C:\>C:\genpass.exe 5 10
fufQuQ7$HP
qDaYjA@u%7
@@mSbdr59E
#h3Kw8&s2b
P6q!3GvQ$L
C:\>