2

我们正在尝试使用 paramiko 模块按需创建到任意服务器的 SSH 隧道,以查询远程数据库。我们尝试使用 paramiko 附带的 forward.py 演示,但最大的限制是似乎没有一种简单的方法可以在套接字服务器启动后关闭 SSH 隧道和 SSH 连接。

我们的限制是我们不能从 shell 激活它,然后手动终止 shell 以停止侦听器。我们需要打开 SSH 连接,隧道,通过隧道执行一些动作,关闭隧道,在 python 中关闭 SSH 连接。

我见过对 server.shutdown() 方法的引用,但不清楚如何正确实现它。

4

1 回答 1

5

我不确定您所说的“正确实施”是什么意思——您只需要跟踪服务器对象并shutdown在需要时调用它。在forward.py中,服务器没有被跟踪,因为最后一行forward_tunnel

ForwardServer(('', local_port), SubHander).serve_forever()

因此服务器对象不再容易访问。但是您可以将其更改为,例如:

global theserver
theserver = ForwardServer(('', local_port), SubHander)
theserver.serve_forever()

并在单独的线程中运行该forward_tunnel函数,以便该main函数重新获得控制权(当serve_forever它在所述单独的线程中运行时)并且可以theserver.shutdown()在适当和需要时调用。

于 2010-05-06T01:46:41.473 回答