Как удалить файл с сервера 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);