我正在尝试自动设置 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/