如何使用Tamir Gal的SharpSSH从SFTP服务器中删除文件?我已经能够完成其他功能,但无法实现删除。
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);
public void Delete(string path)
{
SftpChannel.rm(path);
}
重新编译并引用已重新编译的DLL到你的项目中。这样,你就可以在SFTP服务器上删除文件了。
ilmerge /target:library /out:"$(TargetDir)SharpSSH.dll" /v2 "$(TargetDir)Tamir.SharpSSH.dll" "$(TargetDir)DiffieHellman.dll" "$(TargetDir)Org.Mentalis.Security.dll"
- mattmc3你也可以使用SshExec类,然后使用"RunCommand"方法执行"rm"命令。这样你就不需要重新编译和构建一个新的dll。
使用Tamir的dll,我建议使用以下代码进行删除。这样,您无需修改Tamir的dll,而下面的代码可以编写在您的类中。
string fromFile = "/a/b/MyFile.txt"
SshExec se = new SshExec(host, username, password);
se.Connect(port);
se.RunCommand("rm " + fromFile);