2009-07-26 51 views
3

Pythonで並列SSH接続を処理する最善の方法はなんですか? 私はいくつかのSSH接続をバッ​​クグラウンドで維持したり、コマンドを対話式または時間指定のバッチ方式で送る必要があります。 これはparamikoライブラリでも可能ですか?接続ごとに異なるSSHプロセスを生成するのはいいことです。Pythonでの並列SSH

ありがとうございました。

答えて

1

問題を起こさずに、その目的のために単純にsubprocess.Popenを使用することができます。

ただし、リモートマシンにcronjobをインストールするだけでも構いません。 :-)

1

1つのssh接続を開くことが可能で、望むように多くのsshトンネルを多重化できるように見えます。一般的なsshクライアント(openssh)は、すでに接続が開いている場合に、自動的にシーンの背後で自動的にこのような処理を行います。

+0

一つのこと:あなたのトンネルが、あなたがする実際のssh-EDをしたマシン以外のマシンに接続している場合は、ssh-ED-に機械の間、チャネルトンネリングされたマシンは安全ではありません*。 –

+0

唯一の安全な部分がクライアントとサーバーの間にあることは明らかです。悪意のあるユーザーがサーバー上のループバックでwiresharkを取得できた場合、サーバー上のトンネルエンドポイントとリッスンしているプロセスのいずれのポートとの間でもセキュリティが保護されません。 しかし、これは私が述べたこととは基本的に関係ありません。基本的にはssh server.exampleで、別のターミナルではssh server.exampleを再度使用します。一部のクライアント(openssh)は実際には新しいTCP接続を作成しませんが、sshトランスポート上の別のシャネルだけがすでに開いています。 – ewanm89

3

Twistedで利用できるオプションを確認することは価値があります。例えば、Twisted.Conchページはレポート:OpenSSHのとは異なり

http://twistedmatrix.com/users/z3p/files/conch-talk.html

、コンクサーバーは各着信接続のためのプロセスをフォークしません。代わりに、Twistedリアクトルを使用して接続を多重化します。

3

はい、これはparamikoで行うことができます。

1台のサーバーに接続している場合は、1つの接続で複数のチャネルを実行できます。複数のサーバーに接続する場合は、別々のスレッドで複数の接続を開始できます。複数のプロセスを管理する必要はありませんが、スレッド処理モジュールの代わりにマルチプロセッシングモジュールを使用しても同じ効果が得られます。

私はしばらくの間に捩れた穂軸を見ていませんが、それは再び更新を得るように見えます。私はあなたに両者の優れた機能比較を与えることはできませんでしたが、私はparamikoが簡単に行くことがわかりました。ツイストになるにはもう少し手間がかかりますが、他のネットワークプログラミングをしているのであれば十分に価値があります。

-1

これはあなたの質問に関連しないかもしれません。しかし、pssh、clustersshなどのようなツールが並行して接続を生成することができます。 Expectとpsshを組み合わせて制御することもできます。

1

私はclustersshを試しましたが、私はマルチウィンドウモデルが好きではありません。すべてがうまくいっているという共通のケースでは、あまりにも混乱します。

私はpsshを試しましたが、引用のエスケープとパスワードの入力にはいくつか問題があります。

私が使用した最高の

dshです:スケジュールとトポロジーにおけるその非常に柔軟

 Description: dancer's shell, or distributed shell 
Executes specified command on a group of computers using remote shell 
methods such as rsh or ssh. 
. 
dsh can parallelise job submission using several algorithms, such as using 
fan-out method or opening as much connections as possible, or 
using a window of connections at one time. 
It also supports "interactive mode" for interactive maintenance of 
remote hosts. 
. 
This tool is handy for administration of PC clusters, and multiple hosts. 

:必要であれば、あなたが呼び出しツリーの近くに何かを要求することができます。しかし、デフォルトは、1つのコマンドノードから多くのリーフノードへの単純なトポロジです。SSHトンネルを使用する際に注意すべき

http://www.netfort.gr.jp/~dancer/software/dsh.html