Как удалить файл с SFTP-сервера программно, используя SharpSSH? - PullRequest
14 голосов
/ 02 апреля 2010

Как удалить файл с SFTP-сервера, используя SharpSSH Тамира Гала? Мне удалось выполнить другие функции, кроме удаления.

Ответы [ 4 ]

24 голосов
/ 29 июня 2011

Класс 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);
14 голосов
/ 22 апреля 2010

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

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

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

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

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

6 голосов
/ 05 июня 2010

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

0 голосов
/ 07 декабря 2016

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

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