0

我正在尝试将 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 以后使用)我该怎么做?

4

1 回答 1

1

如果您想保持stdinPython 程序可用,那么即使您无意使用它,您也必须重定向stdin该过程,例如...ssh

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

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

于 2013-05-05T10:26:45.977 回答