我正在尝试使用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) 我怎么能这样做?
答案 0 :(得分:1)
如果您想让stdin
可用于您的Python程序,那么即使您无意使用stdin
进程,也必须重定向ssh
,类似......
subprocess.Popen(proxy_cmd,
shell=True,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE)
请注意,subprocess
模块将保留对Popen
列表中subprocess._active
对象的引用,但您可能还希望将生成的Popen
对象绑定到变量,以便您稍后可以对其执行操作。