执行linux命令,需要使用Python进行额外输入

时间:2015-02-19 21:41:22

标签: python

简短版本 如何使用Python执行需要输入的linux命令?


长版: 我正在使用Python构建一些花哨的网站,为我的SVN服务器提供一种更容易管理的方式。 (我无法记住所有的linux命令)

所以我想使用网页创建,删除和编辑回购和用户。我刚刚遇到问题我不知道如何使用Python执行以下命令:

sudo htdigest /etc/apache2/dav_svn.htdigest "Subversion Repo" [username]

我知道如何使用os.system()subprocess.Popen()执行命令,但问题是一旦执行该命令,它会要求在继续之前输入密码两次。使用os.system()subprocess.Popen()进行多次调用不会有效,因为他们只是创建了一个新的shell。

Python中是否有一种方法可以在需要时使用参数?

1 个答案:

答案 0 :(得分:1)

这完全取决于你可以使用popen并处理双向通信,或者如果你只是等待已知的提示,我会使用pexpect:

假设您想生成一个名为myprocess的程序,并等待具有>的密码提示。 (大于号):

import pexpect
child = pexpect.spawn('myprocess')
child.expect('>')
child.sendline(password_var)
child.expect('>')
child.sendline(password_var)