I'm trying to use ftplib to get a file listing and download any new files since my last check. The code I'm trying to run so far is:
#!/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()
Whenever I run this it times out when I try to retrieve the listing. Any ideas?
Python has a module called ftplib that allows the transfer of files through the FTP protocol. The ftplib module allows us to implement the client side of the FTP protocol, and it allows users to connect to servers in order to send and receive files.
If I want I to change directory I would just use ftp. cwd(path) to do so. To close the FTP connection, use the quit() method.
FTP(File Transfer Protocol) To transfer a file, 2 TCP connections are used by FTP in parallel: control connection and data connection. For uploading and downloading the file, we will use ftplib Module in Python. It is an in-built module in Python.
If Passive Mode is failing for some reason try:
ftp.set_pasv(False)
to use Active Mode.
Most likely a conflict between Active and Passive mode. Make sure that one of the following is true:
EDIT: I looked at the docs, and found that in Python 2.1 and later the default is passive mode. What server are you talking to, and di you know if it supports passive mode?
In active mode (non-PASV) the client sends a PORT command telling the server to initiate the DATA connection on that port, which requires your firewall be aware of the PORT command so it can forward the incoming DATA connection to you -- few firewalls support this. In passive mode the client opens the DATA connection and the server uses it (the server is "passive" in opening the data connection).
Just in case you're not using passive mode, do a ftp.set_pasv(True)
and see if that makes a difference.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With