imad77 has asked for the wisdom of the Perl Monks concerning the following question:

Hi, I am newbie in Perl/CGI and I need your help to develop a little script to help me to download some files located in a FTP server via HTTP to a disk. I need to authenticate with username/password via a HTTP page and I can choose the files to download from the web page to my disk. Can someone help me to get this script? Thanks a lot in advance.

Replies are listed 'Best First'.
Re: File downloading
by McDarren (Abbot) on Oct 19, 2008 at 05:11 UTC
    Simply putting your hand out without having shown the slightest bit of effort to help yourself is not exactly the best way to enamour yourself to the Monks.

    Have a go at doing this yourself. Do a little research. Google and Super Search are your friends. Have a look on CPAN. What you're wanting to do seems like a pretty common task. Who knows, maybe there is a module or two available that might help. You won't know unless you look.

    Get your hands dirty, write a bit of code. Here's a tip - check out some of merlyn's columns. I wouldn't be surprised if he has written one to demonstrate how to solve a problem such as this.

    In other words, people here are much more likely to help somebody who has already shown some effort.

    --Darren

Re: File downloading
by smiffy (Pilgrim) on Oct 19, 2008 at 08:38 UTC

    I have to agree with McDarren - asking for a finished product here may not be entirely appropriate (unless you are willing to pay someone, of course.)

    However, because I'm a bit soft, I'll give you a couple of clues to get you going:

      Hi,

      THanks for your advise. I tried to develop with Perl this code but I experienced some issues and I cannot retrieve a file from an FTP server (Unix) to a local disk (c:\) in a desktop(Windows).

      Here is the code:
      #!/usr/bin/perl use strict; use warnings; use Net::FTP; my $backup_dir = "C:/partage"; my $remote_backup_dir = "/home/toto"; my $remote_file = "toto.txt"; my $dir = "/home/toto"; my $ftp = Net::FTP->new("192.168.1.17", Passive => 1, Debug => 1); $ftp->login('toto','pass10'); $ftp->cwd($dir) || die "Unable to change directories"; $ftp->binary(); $ftp->get($remote_file,"toto.txt"); $ftp->quit;
      I get this error when I try to run this code from a website as: http://192.168.1.17/cgi-bin/papa1.pl and I get this error message:
      Internal Server Error
      Thanks in advance.
        Surrounding your code with <code> tags will make it easier for others to read, and will give you a better chance of getting a response. See Writeup Formatting Tips.

        The first part of debugging the above is to try running it from a command line. If it works as expected from the command line (with no errors), but not through a browser - then the next place to look is your web server error logs. If you don't have access to the logs, then you can use the CGI::Carp module (use CGI::Carp qw(fatalsToBrowser);) to have any errors displayed in your browser.

        Update: Oh, and one final point. Posting usernames/passwords in a public forum is not a particularly clever idea, even if the server in question is in a private network.

        Cheers,
        Darren