python - 如何从 python 脚本在 linux 中设置用户密码?

标签 python subprocess user-management

我正在尝试自动设置 SFTP 访问。此脚本以具有 sudo 权限且没有密码的用户身份运行。

我可以像这样创建一个用户:

>>> import subprocess
>>> process = subprocess.Popen(['sudo', 'useradd', 'test'], shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
>>> process.communicate()
('', '')

接下来我需要设置用户的密码,但我不知道如何设置。这是我尝试过的。

>>> process = subprocess.Popen(['sudo', 'chpasswd'], shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
>>> process.communicate('test:password')

在我的 python 程序中它没有效果,在交互式解释器中它在第一行之后锁定。

执行此操作的最佳方法是什么?

我在 Ubuntu lucid 上运行 python 2.6。

最佳答案

尝试下面的代码,它将按照您需要的自动化执行

from subprocess import Popen, PIPE, check_call  
check_call(['useradd', 'test'])   
proc=Popen(['passwd', 'test'],stdin=PIPE,stdout=PIPE,stderr=PIPE)  
proc.stdin.write('password\n')  
proc.stdin.write('password')  
proc.stdin.flush()  
stdout,stderr = proc.communicate()  
print stdout  
print stderr

print 语句是可选的。

关于python - 如何从 python 脚本在 linux 中设置用户密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4688441/

相关文章:

mongodb - 如何在 MongoDB 中重命名用户?

python - collection.find 不将任何文档返回到数据框

python - glob.iglob 在所有子目录中查找所有 .txt 文件会产生错误

python - 如何等待子进程完成、存储其输出并向输出添加前缀(不带新行)?

python - 如何使用 Python 获取存储库分支列表

python - 如何读取通过 Python 中的 subprocess.popen 生成的文件的输出?

ruby-on-rails - rails : Delete User without losing associations (or other methods of letting Users leave)

python - 为 matplotlib 工具包的多个版本的 geos 安装 basemap 有问题吗?

python - 添加和访问 numpy 结构化数组的对象类型字段

docker - 在 Web App 中使用 OpenLDAP 进行身份验证