Frage

Ich versuche ftplib zu verwenden, um eine Datei zu erhalten Auflistung und downloaden Sie alle neuen Dateien seit meiner letzten Prüfung. Der Code Ich versuche, so weit zu laufen ist:

#!/usr/bin/env python
from ftplib import FTP
import sys

host = 'ftp.***.com'
user = '***'
passwd = '***'

try:
    ftp = FTP(host)
    ftp.login(user, passwd)
except:
    print 'Error connecting to FTP server'
    sys.exit()

try:
    ftp.retrlines('LIST')
except:
    print 'Error fetching file listing'
    ftp.quit()
    sys.exit()

ftp.quit() 

Jedes Mal, wenn ich laufen diese es mal, wenn ich versuche, die Liste abzurufen. Irgendwelche Ideen?

War es hilfreich?

Lösung

Die meisten wahrscheinlich ein Konflikt zwischen Aktiv und Passiv-Modus. Stellen Sie sicher, dass eine der folgenden Bedingungen erfüllt ist:

  1. Der Server unterstützt PASV-Modus und Ihr Kunde setzt PASV-Modus
  2. Wenn der Server nicht im passiven Modus nicht unterstützt, dann Ihre Firewall aktive Modus FTP-Übertragungen unterstützen.

EDIT: ich die Dokumente angesehen und festgestellt, dass in Python 2.1 und höher ist die Standardeinstellung passiver Modus. Welche Server sprechen Sie, und di Sie wissen, ob es im passiven Modus unterstützt?

Im aktiven Modus (Nicht-PASV) sendet der Client einen PORT-Befehl sagen, den Server die Daten-Verbindung auf diesem Port zu initiieren, die Ihre Firewall beachten Sie den PORT-Befehl erfordert, damit es die eingehende Datenverbindung Sie weiterleiten kann - - einige Firewalls unterstützen dies. Im passiven Modus öffnet der Kunde die Datenverbindung und der Server verwendet es (der Server ist „passiv“ in die Datenverbindung zu öffnen).

Für den Fall, Sie sind nicht im passiven Modus verwenden, tun ein ftp.set_pasv(True) und sehen, ob das einen Unterschied macht.

Andere Tipps

Wenn Passiv-Modus aus irgendeinem Grund versuchen Fehler:

ftp.set_pasv(False)

Aktiv-Modus verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top