Solved

Perl FTP download not working.

Posted on 2007-04-04
2
4,239 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
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: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

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

Suggested Solutions

Title # Comments Views Activity
perl script help 12 105
Move Function in Perl Script 2 72
PHP pack() : What exactly is meant by signed char and unsigned char? 7 118
html form to write data to csv 24 132
There are many situations when we need to display the data in sorted order. For example: Student details by name or by rank or by total marks etc. If you are working on data driven based projects then you will use sorting techniques very frequently.…
In the distant past (last year) I hacked together a little toy that would allow a couple of Manager types to query, preview, and extract data from a number of MongoDB instances, to their tool of choice: Excel (http://dilbert.com/strips/comic/2007-08…
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…

808 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