当从python转向另一台机器时转移stdin

时间:2013-05-05 10:00:16

标签: python ssh

我正在尝试使用SSH作为另一台机器的socks代理,然后询问用户是否要继续。 所以我用:

proxy_cmd = "ssh -o 'StrictHostKeyChecking no' -i " + key_filename + ' -D 9998 ubuntu@' + ip_address    
subprocess.Popen(proxy_cmd, shell=True,  stdout=subprocess.PIPE)

if not raw_input('would you like to proceed?(y)')=='y':
    sys.exit()

我得到了:

IOError: [Errno 11] Resource temporarily unavailable

我认为那是因为ssh是开放的,它正在捕获标准输入或其他东西。我只是不知道如何绕过这个(我没有必要将输入发送到ssh,我只是想让它打开供以后使用Selenium) 我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

如果您想让stdin可用于您的Python程序,那么即使您无意使用stdin进程,也必须重定向ssh,类似......

subprocess.Popen(proxy_cmd,
                 shell=True,
                 stdin=subprocess.PIPE,
                 stdout=subprocess.PIPE)

请注意,subprocess模块将保留对Popen列表中subprocess._active对象的引用,但您可能还希望将生成的Popen对象绑定到变量,以便您稍后可以对其执行操作。