Quelqu'un sait comment supprimer un fichier d'un serveur SFTP en utilisant SharpSSH de Tamir Gal? J'ai été en mesure d'accomplir d'autres fonctionnalités, mais la suppression. Merci d'avance.Comment supprimer un fichier d'un serveur SFTP en utilisant SharpSSH?
Répondre
Pour ce faire, vous devrez modifier l'assemblage SharpSSH pour exposer les fonctionnalités dont vous avez besoin.
obtenir le code source et ouvert $ \ SharpSSH-1.1.1.13.src \ SharpSSH \ Sftp.cs
Insérer les lignes de code ci-dessous avant la fin de la classe:
public void Delete(string path)
{
SftpChannel.rm(path);
}
recompilation et référencez la DLL recompilée dans votre projet. Vous pourrez maintenant supprimer des fichiers sur le serveur SFTP.
Merci! Trébuché sur cela et cela fonctionne parfaitement. Juste un petit conseil pour ceux qui veulent compiler eux-mêmes, il est utile d'utiliser la commande ILMerge post-build suivante pour finir avec un assembly pratique appelé SharpSSH.dll: 'ilmerge/target: library/out:" $ (TargetDir) SharpSSH.dll "/ v2" $ (TargetDir) Tamir.SharpSSH.dll "" $ (TargetDir) DiffieHellman.dll "" $ (TargetDir) Org.Mentalis.Security.dll "' – mattmc3
A m'a aidé aussi. Merci beaucoup!! – Vbp
Eh bien, vous pouvez également utiliser classe SshExec puis exécutez la commande « rm » en utilisant la méthode « RunCommand ». De cette façon, vous n'aurez pas à recompiler et à construire une nouvelle DLL.
Merci! Cela m'a évité de modifier la bibliothèque. –
La classe SshExec ne fonctionnait pas pour moi, mais un peu de magie de réflexion a travaillé:
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);
En utilisant dll Tamir Je suggère de supprimer à l'aide du code ci-dessous. De cette façon, vous n'avez pas besoin de modifier la DLL de Tamir, alors que le code ci-dessous peut être écrit dans votre classe.
string fromFile = "https://stackoverflow.com/a/b/MyFile.txt"
SshExec se = new SshExec(host, username, password);
se.Connect(port);
se.RunCommand("rm " + fromFile);
Un long suivi tardif pour cette question. J'ai ajouté ceci dans quelques mises à jour que j'ai faites à https://bitbucket.org/mattgwagner/sharpssh pour éviter de recompiler la bibliothèque vous-même. – MattGWagner