2012-02-19 52 views
3

我产卵的ssh过程中我的python脚本这样之前等待某个子:如何让我的Python应用程序继续

env = {'SSH_ASKPASS':'/home/max/repo/vssh/vssh/vssh.py', 'DISPLAY':':123'} 
for x in sessions: 
    current_session = Popen(["ssh", x.address], 
          stdin=PIPE, 
          stdout=PIPE, 
          stderr=None, 
          shell=False, 
          env=env, 
          preexec_fn=os.setsid) 

问题是我的脚本启动子进程,然后不断去。 ssh需要给它一个密码,这就是我想重定向到我的脚本的STDOUT/STDIN。除了要求输入密码时,我的脚本就完成了。

我怎样才能让我的脚本停止,直到我输入密码并通过ssh成功建立连接?

+1

织物是不是这种东西? http://docs.fabfile.org/en/1.4.0/index.html – Marcin 2012-02-19 17:43:36

回答

3

如果是确实从stdin读取,那么你可以使用communicate method。但密码提示通常绕过stdin并与控制终端通信,在这种情况下,您需要类似pexpect的东西。

您可能想要查看Python的SSH模块,它应该比管理子流程更简单,更健壮。

+0

我可以发送到控制终端的STDIN吗? – n0pe 2012-02-19 22:42:45

+1

使用pexpect,是的。虽然我不认为它被称为stdin的终端。 – 2012-02-19 23:28:11

相关问题