Как удалить файл с сервера SFTP с помощью SharpSSH?

Кто-нибудь знает, как удалить файл с SFTP-сервера, используя Tamir Gal SharpSSH? Я смог выполнить другие функции, но удалить. Спасибо заранее.

Ответы

Ответ 1

Класс SshExec не работал у меня, но работала магия Reflection:

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);

Ответ 2

Чтобы выполнить это, вам нужно будет изменить сборку SharpSSH, чтобы открыть необходимые вам функции.

Получить исходный код и открыть $\ SharpSSH-1.1.1.13.src\SharpSSH\Sftp.cs

Вставьте следующие строки кода до конца класса:

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

Перекомпиляция и ссылка на перекомпилированную DLL в вашем проекте. Теперь вы сможете удалять файлы на SFTP-сервере.

Ответ 3

Ну, вы также можете использовать класс SshExec, а затем выполнить команду "rm" с помощью метода RunCommand. Таким образом, вам не придется перекомпилировать и построить новую dll.

Ответ 4

Используя Tamir dll, я предлагаю удалить, используя приведенный ниже код. Таким образом, вам не нужно модифицировать dll Tamir, тогда как приведенный ниже код может быть написан в вашем классе.

string fromFile = "/a/b/MyFile.txt"
SshExec se = new SshExec(host, username, password);
se.Connect(port);
se.RunCommand("rm " + fromFile);