2010-08-10 12 views
8

J'essaie d'utiliser ftplib pour obtenir une liste de fichiers et télécharger de nouveaux fichiers depuis ma dernière vérification. Le code que je suis en train de courir jusqu'à présent est:Python ftplib temporisation

#!/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 lance ce temps il lorsque je tente de récupérer la liste. Des idées?

Répondre

9

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

  1. Le serveur prend en charge le mode PASV et votre client est mise en 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: J'ai regardé les documents et j'ai trouvé que dans Python 2.1 et plus tard, le mode par défaut est le mode passif. À quel serveur parlez-vous, et di vous savez s'il supporte le mode passif? En mode actif (non-PASV), le client envoie une commande PORT indiquant au serveur d'initier la connexion DATA sur ce port, ce qui nécessite que votre pare-feu soit au courant de la commande PORT afin qu'il puisse vous transmettre la connexion DATA entrante - peu de pare-feu supportent cela. En mode passif, le client ouvre la connexion DATA et le serveur l'utilise (le serveur est "passif" en ouvrant la connexion de données). Au cas où vous n'utilisez pas le mode passif, faites un ftp.set_pasv(True) et voyez si cela fait une différence.

+1

Vous avez raison, c'était un problème avec le mode. Le serveur auquel j'essayais de parler nécessitait Active. Merci pour l'aide! – blcArmadillo

10

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

ftp.set_pasv(False) 

pour utiliser le mode actif.

Questions connexes