我正在尝试自动设置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。
发布于 2011-01-14 14:32:39
communicate的文档指出,如果要通过communicate参数将数据发送到标准输入,则需要添加stdin=PIPE:
http://docs.python.org/release/2.6/library/subprocess.html#subprocess.Popen.communicate
我很欣赏这只是一个框架代码,但这里还有一些其他的小注释,以防它们被使用:
useradd命令是否失败之外,您对该命令的输出不感兴趣,您最好使用subprocess.check_call,如果命令返回非零值,则会引发异常。communicate('test:password')之后检查process.returncode是否为0
https://stackoverflow.com/questions/4688441
复制相似问题