Solved

Perl FTP download not working.

Posted on 2007-04-04
2
4,245 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

Enroll in June's Course of the Month

June's Course of the Month is now available! Every 10 seconds, a consumer gets hit with ransomware. Refresh your knowledge of ransomware best practices by enrolling in this month's complimentary course for Premium Members, Team Accounts, and Qualified Experts.

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 …
A year or so back I was asked to have a play with MongoDB; within half an hour I had downloaded (http://www.mongodb.org/downloads),  installed and started the daemon, and had a console window open. After an hour or two of playing at the command …
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…
Six Sigma Control Plans

729 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