2008-10-16 12 views
10

Ich fragte mich, ob jemand mich auf ein kostenloses ftps-Modul für Python hinweisen könnte.Python-Modul, das FTPs implementiert

Ich bin ein kompletter Neuling für Python, aber das ist etwas, was ich für ein Arbeitsprojekt brauche. Ich brauche einen FTP-Client, um eine Verbindung zu einem Drittanbieter-FTP-Server herzustellen.

danke,

David.

Antwort

1

Ich habe es selbst nicht versucht (ja, ich habe gerade Google verwendet und einige Links gefolgt), aber http://www.lag.net/paramiko/ scheint die empfohlene Lösung zu sein. Auf den ersten Blick handelt es sich um eine SSH-Implementierung in reinem Python, die Tunneling für Dinge wie FTP ermöglicht.

Update: ein Kommentator wies darauf hin, dass ich sftp und ftps verwechselte, sorry. Ich schlage immer noch vor, Paramiko zumindest kurz zu untersuchen, um zu sehen, ob es den Anforderungen entspricht.

+0

SFTP und FTPS sind nicht das gleiche. – jfs

3

Twisted scheint einige Implementierung von FTPS (FTP über SSL) unter dem Conch Unterprojekt zu haben. Ich bin kein verdrehter Experte, aber Glyph, der twisted Mann selbst, ist auf dieser Seite aufgeführt. Vielleicht, indem Sie seine answer zu einer anderen Frage folgen, finden Sie weitere Details (viel Glück).

+0

Danke für den Stecker :). Aber FTPS (FTP, aber über SSL) ist nicht dasselbe wie SFTP (Dateiübertragung über SSH, überhaupt nicht mit dem FTP-Protokoll verwandt). – Glyph

+0

Gern geschehen;). Danke für die Antwort. – gimel

9

Ich glaube, dass Sie Twisted verwenden können, FTPS zu implementieren, indem Sie einfach seine FTP-Implementierung verwenden, aber das FTPClient.connectFactory Attribut zu einer Funktion ändern, die etwas mit connectSSL statt connectTCP tut.

Sind Sie sicher, dass Sie FTPS wollen? SFTP is a different, better, and much more popular protocol dieser Tage: Twisted enthält auch an SFTP implementation.

+1

connectSSL kann für implizite FTPS-Verbindungen verwendet werden, explizites FTPS (mit AUTH-Befehl) ist jedoch beliebter als implizites FTPS. Immer noch Twisted FTP-Implementierung ist ein guter Anfang. Das Implementieren von AUTH (und co) zusammen mit dem Ändern von DTP.connectionMade könnte der nächste Schritt sein. –

1

Ich konnte einen freien sftp-Client für Windows nicht finden, also wickelte ich PATTY's PSFTP mit Pythons Subprozess-Modul. Ich hätte wahrscheinlich die von Glyph erwähnte verdrehte Implementierung verwendet, wenn ich davon gewusst hätte.

Wie dem auch sei, wenn Ihr Interesse ist es unter:

http://code.google.com/p/psftplib/

4

M2Cypto hat eine FTPS-Modul. Vom documentation:

>>> from M2Crypto import ftpslib 
>>> f = ftpslib.FTP_TLS() 
>>> f.connect('', 9021) 
'220 spinnaker.dyndns.org M2Crypto (Medusa) FTP/TLS server v0.07 ready.' 
>>> f.auth_tls() 
>>> f.set_pasv(0) 
>>> f.login('ftp', '[email protected]') 
'230 Ok.' 
>>> f.retrlines('LIST') 
-rw-rw-r-- 1 0  198   2326 Jul 3 1996 apache_pb.gif 
drwxrwxr-x 7 0  198   1536 Oct 10 2000 manual 
drwxrwxr-x 2 0  198   512 Oct 31 2000 modpy 
drwxrwxr-x 2 0  198   512 Oct 31 2000 bobo 
drwxr-xr-x 2 0  198   14336 May 28 15:54 postgresql 
drwxr-xr-x 4 100  198   512 May 16 17:19 home 
drwxr-xr-x 7 100  100   3584 Sep 23 2000 openacs 
drwxr-xr-x 10 0  0    512 Aug 5 2000 python1.5 
-rw-r--r-- 1 100  198   326 Jul 29 03:29 index.html 
drwxr-xr-x 12 0  0    512 May 31 17:08 python2.1 
'226 Transfer complete' 
>>> f.quit() 
'221 Goodbye.' 
>>> 

Alternativ, wenn Sie die Verwendung von Drittanbieter-Module minimieren wollen, sollen Sie in der Lage sein, die Standard-Bibliothek ftplib .ftp Klasse mit der eingebauten (Python) SSL-Unterstützung, Unterklasse. M2Crypto (oder Twisted, wenn Sie so wollen) ist die einfachere Lösung, obwohl.

Verwandte Themen