在运维过程中可能会使用随机密码,下面说说用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:UserscsitsDesktop> 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:UserscsitsDesktopgenpass.spec 169 INFO: UPX is not available. 14190 INFO: Bootloader c:userscsitsappdatalocalprogramspythonpython36libsite-packagesPyInstallerbootloaderWindows-64bitrun.exe 14190 INFO: checking EXE 14204 INFO: Writing RT_ICON 7 resource with 1128 bytes 14213 INFO: Updating manifest in C:UserscsitsDesktopbuildgenpassrun.exe.b10_rizh 14217 INFO: Updating resource type 24 name 1 language 0 14224 INFO: Appending archive to EXE C:UserscsitsDesktopdistgenpass.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:>



