Solved

Perl FTP download not working.

Posted on 2007-04-04
2
4,242 Views
Last Modified: 2008-01-09
I have created a script to download several zip files over 50 files. There are two problems that I am running into, first there are two folders in the directory were the files are. The folders do not need to be downloaded, and the second is that the script does not download all the files it usually downloads something like 50 - 52 files I need it to download all files but not the folders here is a copy of my script please help me figuer out what I am doing wrong.

[start code]

#!/usr/bin/perl
      use Net::FTP;
      use Archive::Extract;
      use File::Listing qw(parse_dir);

      $host = 'myhost.com';
      $path = '/mydir/data/';

      $ftp = Net::FTP->new($host, Timeout => 1800) or die "Cannot contact $host: $!";

      $ftp->login('username', 'password') or die "Cannot login ($host):" . $ftp->message;

      $ftp->cwd($path) or die "Cannot change directory ($host):" . $ftp->message;

      @Files = $ftp->ls('-lR');
      
      $ftp->binary();         
      
foreach $file (parse_dir(\@Files))
      {
          my($name, $type, $size, $mtime, $mode) = @$file;            
            print "Retrieving $name \n";
            print "File type $type \n";
            
            if ($type != 'f')
            {
                  print "File name: $name";
                  print "File type: $type";
            }
            
            if ($type eq 'f')
            {
                  $ftp->hash($name,102400);
            
                  $ftp->get($name, "C:/Temp/$name") or warn "Could not get $_, skipped: $!";
                  EXTRACT("C:/temp/$name");
            }
      }

$ftp->quit or die "Could not close the connection cleanly: $!";
      
sub EXTRACT
      {
            my $ae = Archive::Extract->new( archive => @_ );
            my $ok = $ae->extract( to => 'C:/temp/central/dnld' );

      }

exit;

[code end]

one last thing I have also include a step to unzip all the files as it finishes the download. What is wrong with this thing.
0
Comment
Question by:leotron
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
2 Comments
 
LVL 20

Accepted Solution

by:
jmcg earned 500 total points
ID: 18880110
The fact that your script successfully downloads some files means that it is substantially correct and leads me to suspect that there is some data dependency that is causing your script to fail: running into a transfer problem from the FTP server, running out of disk space, etc.

The first thing to check is the content of @Files to be sure that it contains everything you expect it to contain. Then, if the "foreach $file" loop exits early, before all the files are transferred, I'd look at whether there's an uncaught error occurring in the 'extract' method.

For perfectionism, check whether the call to the 'hash' method is working the way you want. As I read it, you should only need to call it once per ftp session, not for every file. The $file parameter you're passing is evaluated as to true or false, but otherwise ignored.
0
 
LVL 1

Author Comment

by:leotron
ID: 19142098
Thank you for your comment the script was timing out so I increased the timeout time and that solved the problem
0

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

On Microsoft Windows, if  when you click or type the name of a .pl file, you get an error "is not recognized as an internal or external command, operable program or batch file", then this means you do not have the .pl file extension associated with …
Email validation in proper way is  very important validation required in any web pages. This code is self explainable except that Regular Expression which I used for pattern matching. I originally published as a thread on my website : http://www…
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…

749 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question