Question

Je suis en train d'utiliser ftplib pour obtenir un fichier de liste et télécharger de nouveaux fichiers depuis mon dernier chèque. Le code que je suis en train de courir à ce jour est:

#!/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() 

Chaque fois que je cours cette fois sur elle lorsque je tente de récupérer la liste. Toutes les idées?

Était-ce utile?

La solution

Très probablement un conflit entre le mode actif et passif. Assurez-vous que l'une des conditions suivantes est remplie:

  1. Les supports de serveur en mode PASV et votre client de réglage du mode PASV
  2. Si le serveur ne prend pas en charge le mode passif, votre pare-feu doit prendre en charge le mode actif transferts FTP.

EDIT: Je regardais les documents, et a constaté que dans Python 2.1 et plus tard la valeur par défaut est le mode passif. Quel serveur parlez-vous, et vous di savoir s'il prend en charge le mode passif?

En mode actif (non PASV) le client envoie une commande PORT indiquant au serveur pour lancer la connexion DATA sur ce port, ce qui nécessite votre être un pare-feu au courant de la commande PORT afin qu'il puisse transmettre la connexion de données entrantes pour vous - - quelques pare-feu appui. En mode passif le client ouvre la connexion de données et utilisé par le serveur (dans l'ouverture de la connexion de données du serveur est « passive »).

Juste au cas où vous ne l'utilisez le mode passif, faire un ftp.set_pasv(True) et voir si cela fait une différence.

Autres conseils

Si le mode passif échoue pour une tentative de raison:

ftp.set_pasv(False)

pour utiliser le mode actif.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top