Pregunta

Estoy intentando utilizar ftplib para obtener un listado de archivos y descargar los nuevos archivos desde la última comprobación. El código que estoy tratando de correr hasta ahora es:

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

Cada vez que ejecuta este el tiempo de espera al intentar recuperar la lista. Algunas ideas?

¿Fue útil?

Solución

Lo más probable un conflicto entre el modo activo y pasivo. Asegúrese de que una de las siguientes situaciones:

  1. Las soporte el servidor modo PASV y su cliente está fijando el modo PASV
  2. Si el servidor no soporta el modo pasivo, a continuación, el servidor de seguridad debe ser compatible con las transferencias FTP en modo activo.

EDIT: Miré a los documentos, y se encontró que en Python 2.1 y más tarde el valor predeterminado es el modo pasivo. Qué servidor está hablando a, y di que saber si es compatible con el modo pasivo?

En el modo activo (no PASV) el cliente envía un comando PORT diciendo al servidor para iniciar la conexión de datos en ese puerto, que requiere el servidor de seguridad sean conscientes del comando PORT por lo que puede reenviar la conexión de datos entrantes a usted - - unos cortafuegos apoyan esto. En el modo pasivo el cliente abre la conexión de datos y el servidor de aplicaciones de TI (el servidor es "pasiva" en la apertura de la conexión de datos).

En caso de que no se esté usando el modo pasivo, hacer un ftp.set_pasv(True) y ver si eso hace la diferencia.

Otros consejos

Si el modo pasivo está fallando por alguna razón intento:

ftp.set_pasv(False)

para utilizar el modo activo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top