[Tutor] SOLVED: [ FTP question (slightly OT)]
Paul Schewietzek
tetsuo2k6 at web.de
Tue Aug 19 16:06:28 CEST 2008
Just found the solution, I didn't realize that ftplib has 'passive mode'
as the standard - so I ended up with never actually trying to use
'active mode'....
Thanks nonetheless :)
Am Dienstag, den 19.08.2008, 15:16 +0200 schrieb Paul Schewietzek:
> Hello everyone,
>
>
>
> I put together the following, most of it is from different howtos on the
> web.
>
> <code>
> #!/usr/bin/env python
> # -*- coding: utf-8 -*-
>
> def gettext(ftp, filename, outfile=None):
> if outfile is None:
> outfile = sys.stdout
> ftp.retrlines("RETR %s" % filename, lambda s, w=outfile.write:
> w(s+"\n"))
>
> def main():
> from ftplib import FTP
> import datetime
> ftp = FTP("ftp.ftpserver.com")
> ftp.login("my_username", "my_passwd")
> ftp.set_pasv(1)
>
> filename = "name_of_textfile"
> outfile = open(filename, "w")
>
> ftp.cwd("OUT")
> gettext(ftp, filename, outfile)
> ftp.quit()
>
> if __name__ == "__main__":
> main()
> </code>
>
> The script actually runs fine when "ftp.ftpserver.com" == "my_server_a",
> however when "ftp.ftpserver.com" == "my_server_b", it produces:
>
> <snip>
> Traceback (most recent call last):
> File "/usr/local/bin/get_afendis_STATS_from_ftp.py", line 24, in ?
> main()
> File "/usr/local/bin/get_afendis_STATS_from_ftp.py", line 20, in main
> gettext(ftp, filename, outfile)
> File "/usr/local/bin/get_afendis_STATS_from_ftp.py", line 7, in
> gettext
> ftp.retrlines("RETR %s" % filename, lambda s, w=outfile.write: w(s
> +"\n"))
> File "/usr/lib/python2.4/ftplib.py", line 396, in retrlines
> conn = self.transfercmd(cmd)
> File "/usr/lib/python2.4/ftplib.py", line 345, in transfercmd
> return self.ntransfercmd(cmd, rest)[0]
> File "/usr/lib/python2.4/ftplib.py", line 324, in ntransfercmd
> conn.connect(sa)
> File "<string>", line 1, in connect
> socket.error: (110, 'Connection timed out')
> </snip>
>
> So it looks like "my_server_b" has some different requirements or
> something? I don't have much experience with the ftp-protocol, so I
> thought maybe you guys could point me in the right direction?
>
> The files are definitely existent on the servers, and when I connect to
> them via the shell, I can up- and download files as I want.
>
> Seems like the call to ftp.retrlines() somehow doesn't work...
>
> I'm also not sure about ftp.set_pasv(1).
>
>
>
> Regards, Paul
>
> _______________________________________________
> Tutor maillist - Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
More information about the Tutor
mailing list