python-创建用户设置随机密码(46)

 

import subprocess
import sys
from randpass import gen_pass

def adduser(username,password,fname):
    data = """user information:
%s:%s
"""
    subprocess.call('useradd %s' % username,shell=True) #subprocess.call,可以使用所有的shell命令
    subprocess.call(
        'echo %s | passwd --stdin %s' % (password,username),
        shell=True
    )
    with open(fname,'a') as fobj:
        fobj.write(data % (username,password))

if __name__ == '__main__':
    username = sys.argv[1]
    password = gen_pass
    adduser(username,password,'/tmp/user.txt')

#python3 adduser.py john
生成安全的随机密码字符串可以通过 `random` 库实现,但在安全性要求较高的场景下,推荐使用更专业的 `secrets` 模块[^1]。然而,如果仅限于使用 `random` 库,则可以按照以下方式构建: ### 使用 Random 库生成随机密码 以下是基于 `random` 库的一个简单示例代码,它能够生成一个指定长度的随机字符串,该字符串可作为密码使用。 ```python import random import string def generate_random_password(length): characters = string.ascii_letters + string.digits + string.punctuation # 定义字符集 password = ''.join(random.choice(characters) for _ in range(length)) # 随机选择字符并组合 return password # 示例:生成一个长度为16的随机密码 password = generate_random_password(16) print(password) ``` 上述代码中,`characters` 变量定义了一个包含大小写字母、数字以及特殊符号的字符集合。通过列表推导式和 `random.choice()` 函数,程序会从这个字符集中随机选取指定数量的字符,并最终将其拼接成完整的字符串[^4]。 需要注意的是,在涉及敏感信息处理的情况下(如实际应用中的用户密码管理),尽管此方法可行,但由于 `random` 模块并非专为加密用途设计,因此可能存在安全隐患。相比之下,`secrets` 模块提供了更高的安全保障。 另外一种替代方案是利用 UUID 来创建唯一标识符转为字符串形式充当临时密码,不过这种方法通常不适用于长期存储或者复杂度需求高的场合。 ### 总结 虽然可以借助 `random` 实现基本功能,但从最佳实践角度出发还是提倡选用更适合的任务导向型工具——即当目标是为了生产高强度且不可预测性强的数据串时,请优先考虑采用 `secrets` 或其他专用算法来达成目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值