在ssh从python转移到另一台机器时转移stdin
我试图使用SSH作为另一台机器的socks代理,然后询问用户是否希望继续。 因此,我使用:在ssh从python转移到另一台机器时转移stdin,python,ssh,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
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是开放的,它正在捕获stdin或其他东西。我只是不知道如何绕过这一点(我不需要向ssh发送输入,我只想让它打开供Selenium稍后使用)
我该怎么做呢?如果您想让Python程序可以使用
stdin
,那么您必须重定向stdin
,以执行ssh
过程,即使您无意使用它,比如
subprocess.Popen(proxy_cmd,
shell=True,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE)
请注意,子流程
模块将在子流程中保留对Popen
对象的引用。\ u active
列表,但您可能还希望将生成的Popen
对象绑定到一个变量,以便以后可以对其执行操作