Python & Total Commander(FTP)?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
yokay
User
Beiträge: 26
Registriert: Mittwoch 15. August 2018, 13:50

Hallo liebes Forum,

ich wollte mal fragen, ob es eine Möglichkeit gibt, mit Python(3.6) einen Zugang zum FTP Server (Total Commander) zu erstellen und immer die aktuellsten .txt Dateien zu downloaden?
Wie könnte man dies umsetzen und/oder hat jemand eine Quelle zum fertigen Script?

Ich bedanke mich im Voraus ! :)

LG!
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Es gibt eine eingebaute ftplib. Deren Dokumentation kannst du anschauen & auf stackoverflow nach Beispielen suchen.
yokay
User
Beiträge: 26
Registriert: Mittwoch 15. August 2018, 13:50

danke @__deets__ !!!
yokay
User
Beiträge: 26
Registriert: Mittwoch 15. August 2018, 13:50

Hier einmal die Lösung:
from ftplib import FTP
from datetime import datetime


start = datetime.now()
ftp = FTP('host')
ftp.login('user','pw')

# Get All Files
files = ftp.nlst()

# Print out the files
for file in files:
print("Downloading..." + file)
ftp.retrbinary("RETR " + file ,open("SpeicherPath" + file, 'wb').write)

ftp.close()

end = datetime.now()
diff = end - start
print('All files downloaded for ' + str(diff.seconds) + 's')
Allerdings hab ich ein neues Problem:
Es gibt ne Firewall dazwischen und ich weiß nicht wie man dies über python anspricht :( :( (Über Total Commander komme ich ohne Probleme mit den Passwörtern durch die Firewall). Hab auch schon bisschen geschaut aber nichts wirklich hilfreiches (in meinen Augen) gefunden.
Habt iht eventuell noch ne idee wie man dieses Problem angehen könnte?

LG!
Benutzeravatar
__blackjack__
User
Beiträge: 14034
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@yokay: Dann wird TotalCommander in der Firewall freigeschaltet sein. Das musst Du für Dein Python-Programm auch machen. Wenn Programme das selber machen könnten, dann wären Firewalls nicht mehr so wirklich sinnvoll. ;-)
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
yokay
User
Beiträge: 26
Registriert: Mittwoch 15. August 2018, 13:50

@__blackjack__ Das es durch Total Commander funktioniert hat was mit den extra Zugangsdaten zu tun, also es gibt nur einen User der das trotz Firewall nutzen darf. Diesen User versuche ich irgendwie in python einzubringen. :D
nezzcarth
User
Beiträge: 1756
Registriert: Samstag 16. April 2011, 12:47

FTP ist im Zusammenhang mit Firewalls recht nervig, da neben Port 21 zusätzliche Ports für den eigentlichen Transfer benötigt werden, die jeweils von Firewalls blockiert werden können. ftplib verwendet standard-mäßig den passive Mode, bei dem der Server für das Öffnen zusätzlicher Ports verantwortlich ist, die auch in der Firewall berücksichtigt sein müssen. Wenn du Einfluss auf die Firewall hast, kannst du i.d.R. im FTP-Server einen entsprechenden Port-Bereich konfigurieren, den du in der Firewall freigeben kannst. Ansonsten würde ich mal schauen, ob es klappt, wenn du den active mode verwendest bzw. den passive-mode deaktivierst (hier kann dann wiederum eine Client-seitige Firewall dazwischen funken): https://docs.python.org/3/library/ftpli ... P.set_pasv
Falls du etwas anders als FTP verwenden kannst, wäre das sehr zu empfehlen.
yokay
User
Beiträge: 26
Registriert: Mittwoch 15. August 2018, 13:50

danke @nezzcarth für deine Antwort und Hilfe! :). Eine andere Möglichkeit habe ich leider nicht. Mal gucken, ob ich es doch noch irgendwie schaffe.

LG!
Antworten