2

SharpSSH を既存の .NET 2.0 プロジェクトに統合しています。そのため、 http://sshnet.codeplex.com/または他の新しいライブラリに切り替えることはできません...

デバイスとの単一の接続ですべてが機能しており、コマンドを実行してファイルを問題なくアップロードできます。

ただし、このツールは複数のデバイスを同時に更新できる必要があるため、アプリケーションは同時に複数の Sharpssh 接続を開始します。その後、すべてが機能し続けますが、ファイルが完全にアップロードされず、「セッションがダウンしています」というエラーがスローされることがあります。

SshTransferProtocolBase tx = new Scp(_hostname, _username, _password);
tx.Connect();
tx.OnTransferProgress += new FileTransferEvent(tx_OnTransferProgress);

tx.Put(sshSource.FullName, "/tmp/" + Path.GetFileName(sshTarget));
// --> tx.Put throws the error

このように「new Scp」を「new Sftp」に置き換えると

SshTransferProtocolBase tx = new Sftp(_hostname, _username, _password);

エラー メッセージは次のとおりです。「inputstream is closed」または「session is down」

これを回避する方法についてのアイデアはありますか?

どうもありがとう、フランク

4

2 に答える 2

3

私は同じ問題に苦しんでいました。マルチプロセッシング中に「session is down」エラーが発生することは、SharpSSH に関する既知の問題です。このライブラリは更新されなくなりました。したがって、SSH.NET などの別の SSH ライブラリを使用することをお勧めします: https://github.com/sshnet/SSH.NET

使いやすいです。例:

SshClient sshobject = new SshClient(OSShostIP, OSSusername, OSSpassword);
sshobject.Connect();
sshobject.RunCommand("mkdir /home/nedim");
sshobject.Disconnect();
于 2012-12-28T07:33:04.393 に答える
0

定義可能な最大再試行回数で再試行ループを追加することで解決されます...

于 2013-11-22T15:10:15.713 に答える