如何使用SharpSSH以编程方式从SFTP服务器中删除文件?
任何人都知道如何使用Tamir Gal的SharpSSH从SFTP服务器上删除文件?我已经能够完成其他功能,但删除。提前致谢。如何使用SharpSSH以编程方式从SFTP服务器中删除文件?
要完成此操作,您需要修改SharpSSH程序集以显示所需的功能。
获得源代码,并打开$ \ SharpSSH-1.1.1.13.src \ SharpSSH \ Sftp.cs
插入下面的课结束前行代码:
public void Delete(string path)
{
SftpChannel.rm(path);
}
重新编译并在您的项目中引用重新编译的DLL。您现在可以删除SFTP服务器上的文件。
谢谢!偶然发现,它完美的作品。对于任何想要自行编译的用户来说,使用下面的构建后ILMerge命令最终会带来一个名为SharpSSH.dll的方便程序:'ilmerge/target:library/out:“$(TargetDir) SharpSSH.dll“/ v2”$(TargetDir)Tamir.SharpSSH.dll“”$(TargetDir)DiffieHellman.dll“”$(TargetDir)Org.Mentalis.Security.dll“' – mattmc3 2010-10-20 13:02:49
也帮助了我。非常感谢!! – Vbp 2013-08-19 20:33:35
那么你也可以使用SshExec类,然后使用“RunCommand”方法执行“RM”命令。这样你就不必重新编译并建立一个新的dll。
谢谢!这使我免于修改图书馆。 – 2011-01-25 11:06:38
的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);
使用塔米尔的DLL我会建议使用下面的代码删除。这样,你不需要修改Tamir的dll,而下面的代码可以写在你的类中。
string fromFile = "https://*.com/a/b/MyFile.txt"
SshExec se = new SshExec(host, username, password);
se.Connect(port);
se.RunCommand("rm " + fromFile);
这个问题很长时间的后续工作。我在https://bitbucket.org/mattgwagner/sharpssh所做的一些更新中添加了这一点,以避免自己重新编译库。 – MattGWagner 2012-03-12 16:30:14