質問

リモートデータベースを照会する目的で、任意のサーバーにオンデマンドでSSHトンネルを作成するためにParamikoモジュールを使用しようとしています。 Paramikoに出荷されるForward.pyデモを使用しようとしましたが、ソケットサーバーが起動するとSSHトンネルとSSH接続を閉じる簡単な方法はないようです。

私たちが持っている制限は、シェルからこれをアクティブにして、シェルを手動で殺してリストナーを停止できないことです。 SSH接続を開き、トンネルを開き、トンネルを介していくつかのアクションを実行し、トンネルを閉じ、Python内のSSH接続を閉じる必要があります。

server.shutdown()メソッドへの参照を見てきましたが、それを正しく実装する方法は明確ではありません。

どんな助けも大歓迎です...

役に立ちましたか?

解決

「正しく実装する」という意味がわかりません - サーバーオブジェクトを追跡して呼び出すだけでよいです shutdown あなたが望むときにそれに。の forward.py, 、サーバーは追跡されていません。 forward_tunnel

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

そのため、サーバーオブジェクトはもはや簡単にアクセスできません。しかし、あなたはそれをただ変えることができます、例:

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

そして、実行します forward_tunnel 別のスレッドで機能します main 関数は制御を取り戻します(while serve_forever 言われた別々のスレッドで実行されています)と呼び出すことができます theserver.shutdown() それが適切で必要なときはいつでも。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top