2009-07-22 10 views
0

Gibt es C# Open-Source-Komponenten, die es mir erlauben, Dateien über SFTP zu löschen?Dateien über SFTP löschen

+0

Just checking: von SFTP, meinen Sie das Übertragungsprotokoll SSH-Datei? Da das mit FTP nichts zu tun hat, ist Ihre Frage mit FTP getaggt. – Thorarin

+0

Ich stimme nicht zu, SFTP und FTP sind in einigen Punkten ähnlich. – djangofan

+0

@djangofan Konzepte sind ähnlich, aber die Implementierung ist völlig anders. Das SFTP-Protokoll hat mit FTP nichts gemein (außer Name). Siehe http://www.rebex.net/secure-ftp.net/ für Unterschiede zwischen FTP, FTPS, FTP/SSL und SFTP. –

Antwort

0

Sie können OpenSSH verwenden und sftp Batch-Befehle ausgeben. Alles, was Sie auf der C# -Seite tun müssen, ist den sftp-Prozess mit der richtigen Befehlszeile zu starten.

1

Tamir Gals Sharp SSH ist ziemlich populär Open-Source-Implementierung von SFTP für .NET. Versuche es.

Wenn Sie voll unterstützte kommerzielle Komponente bevorzugen können unsere Rebex SFTP versuchen. Folgender Code ilustrates das Konzept:

using Rebex.Net; 

// create client and connect 
Sftp client = new Sftp(); 
client.Connect(hostname); 
client.Login(username, password); 

// delete the file 
client.DeleteFile("/path/to/the/file"); 

// disconnect 
client.Disconnect(); 
+0

Martin, bitte geben Sie Ihre Zugehörigkeit in jedem Beitrag an, in dem Sie Ihre eigenen Produkte erwähnen. Ich weiß, du versuchst nichts Dunkles, das ist nur die Politik, die wir alle bitten zu befolgen. Bitte beachten Sie die [FAQ] (http://stackoverflow.com/faq) für die offizielle Grundsatzerklärung. Vielen Dank. –

+1

Sicher, kein Problem. Ich habe diesem Beitrag (und auch anderen Beiträgen) ein magisches "unser" Wort hinzugefügt. –

0

Ich habe http://sshnet.codeplex.com/ im Einsatz. Es hat für mich gut funktioniert und wird aktiv entwickelt/unterstützt.

Der Code, um die Datei zu löschen, ist so einfach wie

public static void DownloadFile(SftpClient client, SftpFile remoteFileName) 
{ 
    var localFileName = System.IO.Path.GetFileName(remoteFileName.Name); 
    using (var file = File.OpenWrite(localFileName)) 
    { 
     client.DownloadFile(remoteFileName.FullName , file); 
     remoteFileName.Delete(); 
    } 
} 
0

Linux-Befehl rm mit dem Objekt SshExec Ausführen. Dieser Befehl löscht die Datei. Beispiel:

rm /dir1/dir2/file.txt

Anderes Beispiel Tamir Execute Command

public static bool DeleteFile(string remotePath) 
{ 
    try 
    { 
     SshExec comando = new SshExec(Server, User); 
     comando.Password = Password; 

     comando.Connect(); 

     string paso = comando.RunCommand("rm " + remotePath); 

     comando.Close(); 

     return true; 
    } 
    catch (Exception ex) 
    { 

     mErrorSFTP = ex.Message; 
     return false; 
    } 
} 
+0

Obwohl der Code geschätzt wird, sollte er immer eine begleitende Erklärung enthalten. Das muss nicht lange dauern, aber es wird erwartet. – peterh