python - 有没有办法在 Python 中编写脚本来更改 Linux 中的用户密码?如果是这样,如何?

标签 python linux authentication

我正在尝试用 Python 编写一些脚本,偶然发现需要制作一些东西来更新 Linux 系统中给定用户的密码...

UPDATE:目的是实现根据给定数据/算法自动更新密码的脚本。重要的是没有人为干预......

有什么办法可以实现吗?还是应该通过其他方式搜索?

谢谢!

最佳答案

您可以使用opensslusermod:

#!/usr/bin/env python
import subprocess

login = 'username'
password = 'somepassword'

# OpenSSL doesn't support stronger hash functions, mkpasswd is preferred
#p = subprocess.Popen(('openssl', 'passwd', '-1', password), stdout=subprocess.PIPE)
p = subprocess.Popen(('mkpasswd', '-m', 'sha-512', password), stdout=subprocess.PIPE)
shadow_password = p.communicate()[0].strip()

if p.returncode != 0:
    print 'Error creating hash for ' + login

r = subprocess.call(('usermod', '-p', shadow_password, login))

if r != 0:
    print 'Error changing password for ' + login

关于python - 有没有办法在 Python 中编写脚本来更改 Linux 中的用户密码?如果是这样,如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4749083/

相关文章:

Python - 从字符串中提取数字和逗号(使用 re.sub)

python - 如何在python 3.7中生成条形码

python - Pandas groupby 和 rolling_apply 忽略 NaN

linux - 如何使用 Perl 打印到文本文件?

python - 通过 Oauth 进行身份验证时 SSL 抛出错误 185090050

c# - 在 Web 应用程序中通过 Azure Active Directory 进行身份验证

python - Pandas DataFrame 中的列和行的名称组

linux - 如何使用带有管道概念的排序和复制命令?

linux - 动态加载程序如何使用正确的 arch 版本加载库

session - CakePHP 保持从主域到子域的 session