15

Tamir GalのSharpSSHを使用してSFTPサーバーからファイルを削除するにはどうすればよいですか?私は他の機能を達成することができましたが、削除しました。

4

4 に答える 4

24

SshExec クラスはうまくいきませんでしたが、ちょっとしたリフレクション マジックはうまくいきました。

var prop = sftp.GetType().GetProperty("SftpChannel", BindingFlags.NonPublic | BindingFlags.Instance);
var methodInfo = prop.GetGetMethod(true);
var sftpChannel = methodInfo.Invoke(sftp, null);
((ChannelSftp) sftpChannel).rm(ftpPath);
于 2011-06-28T21:57:23.750 に答える
14

これを達成するには、SharpSSH アセンブリを変更して、必要な機能を公開する必要があります。

ソース コードを取得し、$\SharpSSH-1.1.1.13.src\SharpSSH\Sftp.cs を開きます

クラスの終わりの前に次のコード行を挿入します。

public void Delete(string path)
{
    SftpChannel.rm(path);
}

プロジェクトで、再コンパイルされた DLL を再コンパイルして参照します。これで、SFTP サーバー上のファイルを削除できるようになります。

于 2010-04-22T12:42:12.410 に答える
6

SshExecクラスを使用してから、「 RunCommand」メソッドを使用して「rm」コマンドを実行することもできます。この方法では、新しい dll を再コンパイルしてビルドする必要はありません。

于 2010-06-04T22:26:36.200 に答える
0

Tamir の dll を使用して、以下のコードを使用して削除することをお勧めします。この方法では、Tamir の dll を変更する必要はありませんが、以下のコードはクラスに記述できます。

string fromFile = "/a/b/MyFile.txt"
SshExec se = new SshExec(host, username, password);
se.Connect(port);
se.RunCommand("rm " + fromFile);
于 2016-12-07T18:58:16.833 に答える