Start Programmierung Python Python in einfachen Beispielen : Ein einfacher ftp-Server
20 | 05 | 2012
Python in einfachen Beispielen : Ein einfacher ftp-Server
Geschrieben von: Joerg   
Mittwoch, den 27. April 2011 um 18:16 Uhr

In Python2.7. sind eine Vielzahl von Modulen enthalten. Dazu gehört beispielsweise ein FTP-Client, ein FTP-Server-Modul ist nicht m.E. Gegenstand der Version 2.7.. Ein geeignetes Modul für einen FTP-Server läßt sich unter dem Namen pyftpdlib (http://code.google.com/p/pyftpdlib/)  im Internet finden.

Wir müssen die Datei pyftpdlib-0.6.0.tar.gz  oder, falls es sie gibt, eine neuere Datei herunterladen und entpacken. Ich habe dies mit demTotalcommander (Shareware) gemacht, da in diesem ein geeigneter Entpacker eingebunden ist. Alle wichtigen Dateien liegen nach dem Entpacken  im Ordner pyftpdlib-0.6.0.  Mit dem Aufruf  "python setup.py install" kommen wir beispielsweise zum Ziel, wenn vorher aus dem Ordner pyftpdlib-0.6.0 der Unterordner pyftplib in das Verzeichnis der Python.exe gelegt worden ist. Werden dann noch aus dem Ordner pyftpdlib-0.6.0 die Dateien setup.py und INSTALL  in das Pythonhauptverzeichnis gelegt, so kann mit dem Aufruf python setup install in dem Kommando-Eingabefenster (cmd.exe), das Modul installiert werden. Es kann natürlich auch eine entsprechende Batchdatei erstellt werden.

Ein anonymer Zugang

Dies geschieht ähnlich, wie bei dem HTTP, bzw CGIHTTP-Server. Wir legen eine Batch-Datei an (Textdatei mit der Endung .bat). In diese Datei kommt eine Zeile: E:\xampp\python27\python -m pyftpdlib.ftpserver -w, die Option -w steht für Schreibzugriff, es gibt auch andere Optionen, s. Dokumentation des Moduls. Bei mir liegt python in einem Unterverzeichnis von xampp, der Pfad muss natürlich geeignet angepasst  werden. Die Batch-Datei wird in das Verzeichnis gelegt, welches als das Hauptverzeichnis für den ftp-Zugriff gelten soll.  Wir klicken die Batch-Datei an und es öffnet sich das Windows-Kommando-Fenster. Solange wir es nicht schließen, läuft der Server.

 

ftp_7

 

Geben wir nun in der Adressleiste des Internet-Browsers die IP-Adresse des Rechners an: beispielsweise  ftp://192.168.178.21. So wird das ftp-Verzeichnis angezeigt.

 

ftp_4

Natürlich kann man auch mit einem ftp-Programm arbeiten. Viele Datei-Explorer haben auch diese Funktionen, siehe beispielsweise den Totalcommander. In Linux heißt ein entsprechendes Programm MidnightCommander. Geben wir in unserem Rechner ftp://localhost ein, öffnet sich auch dieser Zugang. Zugriff haben wir jetzt von allen Rechnern im Netzwerk auf dieses Verzeichnis.

 

Ein passwortgeschützter Zugriff

Hier nutzten wir die GUI des Python-Paketes. Nachdem folgendes Skript ausgeführt wurde, haben wir einen geschützten Zugang mit dem einzigen Nutzer "Willi". Es können auch weitere Nutzer hinzugefügt werden.

ftp-Server mit einem Nutzer
1
2
3
4
5
6
7
8
9
from pyftpdlib import ftpserver
nutzer=ftpserver.DummyAuthorizer()
nutzer.add_user("Willi","1234","E:/Du_darfst/ftp", perm="elradfmw")
ftp_handler=ftpserver.FTPHandler
ftp_handler.authorizer=nutzer
address=("0.0.0.0",21)
ftpd=ftpserver.FTPServer(address,ftp_handler)
ftpd.serve_forever()
 

Solange die Python-Shell geöffnet bleibt, versieht der Server seinen Dienst, Aktivitäten werden protokolliert. Der Parameter perm gibt die Zugriffsmöglichkeiten des Nutzers an. Hier hat er alle Möglichkeiten. Die Bedeutung der Werte kann in der Dokumentation nachgelesen werden.

 

Überprüfung durch Aufruf der IP Des Rechners:

 

ftp_5

 

Geben wir als Nutzer Willi ein und das Passwort 1234, so öffnet sich das Verzeichnis wie im anonymen Fall. Entsprechendes gilt, wenn wir die IP-Adresse des Servers von irgeneinem Rechner im Netz aus  eingeben.

 

Tags: