FTP example going through a FTP Proxy

jakecjacobson jakecjacobson at gmail.com
Wed Jan 7 21:56:58 CET 2009


On Jan 7, 2:11 pm, jakecjacobson <jakecjacob... at gmail.com> wrote:
> On Jan 7, 12:32 pm, jakecjacobson <jakecjacob... at gmail.com> wrote:
>
> > Hi,
>
> > I need to write a simple Python script that I can connect to a FTP
> > server and download files from the server to my local box.  I am
> > required to go through a FTP Proxy and I don't see any examples on how
> > to do this.  The FTP proxy doesn't require username or password to
> > connect but the FTP server that I am connecting to does.
>
> > Any examples on how to do this would be greatly appreciated.  I am
> > limited to using Python version 2.4.3 on a Linux box.
>
> This is what I have tried so far,
>
> import urllib
>
> proxies = {'ftp':'ftp://proxy_server:21'}
> ftp_server = 'ftp.somecompany.com'
> ftp_port='21'
> username = 'aaaa'
> password = 'secretPW'
>
> ftp_string='ftp://' + username + '@' + password + ftp_server + ':' +
> ftp_port
>
> data = urllib.urlopen(ftp_string, proxies=proxies)
>
> data=urllib.urlopen(req).read()
>
> print data
>
> I get the following error:
>
> Traceback (most recent call last):
>   File "./ftptest.py", line 22, in ?
>     data = urllib.urlopen(ftp_server, proxies=proxies)
>   File "/usr/lib/python2.4/urllib.py", line 82, in urlopen
>     return opener.open(url)
>   File "/usr/lib/python2.4/urllib.py", line 190, in open
>     return getattr(self, name)(url)
>   File "/usr/lib/python2.4/urllib.py", line 470, in open_ftp
>     host, path = splithost(url)
>   File "/usr/lib/python2.4/urllib.py", line 949, in splithost
>     match = _hostprog.match(url)
> TypeError: expected string or buffer

I might be getting closer.  Now I am getting "I/O error(ftp error):
(111, 'Connection refused')" error with the following code:

import urllib2

proxies = {'ftp':'ftp://proxy_server:21'}
ftp_server = 'ftp.somecompany.com'
ftp_port='21'
username = 'aaaa'
password = 'secretPW'

password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
top_level_url = ftp_server
password_mgr.add_password(None, top_level_url, username, password)

proxy_support = urllib2.ProxyHandler(proxies)
handler = urllib2.HTTPBasicAuthHandler(password_mgr)
opener = urllib2.build_opener(proxy_support)
opener = urllib2.build_opener(handler)
a_url = 'ftp://' + ftp_server + ':' + ftp_port + '/'
print a_url

try:
	data = opener.open(a_url)
	print data
except IOError, (errno, strerror):
	print "I/O error(%s): %s" % (errno, strerror)



More information about the Python-list mailing list