[root@host6 dell-download]# ./get-files.pl > out.log 2>&1 & [1] 10027 [root@host6 dell-download]# tail -f out.log Net::FTP::Recursive=GLOB(0x1c109a8)>>> CDUP Net::FTP::Recursive=GLOB(0x1c109a8)<<< 250 CDUP command successful. Net::FTP::Recursive=GLOB(0x1c109a8)>>> CWD Red Hat Enterprise Linux 4.7 Net::FTP::Recursive=GLOB(0x1c109a8)<<< 250 CWD command successful. Making dir: Red Hat Enterprise Linux 4.7 Calling rget in /Browse_For_Drivers/Servers, Storage & Networking/PowerEdge/PowerEdge R610/Network/HTML Net::FTP::Recursive=GLOB(0x1c109a8)>>> PASV Net::FTP::Recursive=GLOB(0x1c109a8)<<< 227 Entering Passive Mode (143,166,135,12,206,55) Net::FTP::Recursive=GLOB(0x1c109a8)>>> LIST Can't use an undefined value as a symbol reference at /usr/share/perl5/Net/FTP/dataconn.pm line 54. ^C [1]+ Exit 255 ./get-files.pl > out.log 2>&1 #### ftp> cd "Browse_For_Drivers/Servers, Storage & Networking/PowerEdge/PowerEdge R610/Network/HTML" 250 CWD command successful. ftp> ls 227 Entering Passive Mode (143,166,135,12,221,177) 125 Data connection already open; Transfer starting. drwxrwxrwx 1 owner group 0 Aug 29 2012 Linux drwxrwxrwx 1 owner group 0 Aug 29 2012 LINUX - OS .... drwxrwxrwx 1 owner group 0 Aug 29 2012 Windows Server 2008 x86 226 Transfer complete. #### 48 sub _close { 49 my $data = shift; 50 my $ftp = ${*$data}{'net_ftp_cmd'}; 51 52 $data->SUPER::close(); 53 54 delete ${*$ftp}{'net_ftp_dataconn'} 55 if exists ${*$ftp}{'net_ftp_dataconn'} 56 && $data == ${*$ftp}{'net_ftp_dataconn'}; 57 } #### 60 sub close { 61 my $data = shift; 62 my $ftp = ${*$data}{'net_ftp_cmd'}; 63 64 if (exists ${*$data}{'net_ftp_bytesread'} && !${*$data}{'net_ftp_eof'}) { 65 my $junk; 66 $data->read($junk, 1, 0); 67 return $data->abort unless ${*$data}{'net_ftp_eof'}; 68 } 69 70 $data->_close; #### #!/usr/bin/perl use strict; use warnings; use Carp; use Data::Dumper; use Net::hostent; #use Net::Ping; use Net::FTP::Recursive; use Log::StdLog { level => 'info', file => $0 . "log" }; #use Log::StdLog { level => 'warn', file => $config{log}{file} . $0 . "log" }; my %params = ( site => "ftp.dell.com", basedir => "Browse_For_Drivers/Servers, Storage & Networking/PowerEdge", modeldirs => [ "PowerEdge R810", "PowerEdge R610", "PowerEdge R720", "PowerEdge R620", "PowerEdge M620", "PowerEdge M1000E", ], ); print {*STDLOG} info => "Starting $0, creating dirs."; for my $dir (@{ $params{modeldirs}}) { mkdir $dir; chdir $dir; FTPConnect (\%params, "$dir"); chdir ".."; } print {*STDLOG} info => "Finished $0."; sub FTPConnect { my $ref_params = shift @_; my $dir = shift @_; my $ftp = Net::FTP::Recursive->new($ref_params->{site}, Debug => 1, Timeout => 15); if ($ftp) { print {*STDLOG} debug => "OK: connected via FTP to " . $ref_params->{site} ; $ftp->login("anonymous",'me@here.there'); $ftp->binary; $ftp->cwd($ref_params->{basedir} . '/' . $dir); print {*STDLOG} info => "Starting download for dir $dir.\n"; $ftp->rget( #FlattenTree => 1, MatchFiles => qr/\.txt$/, ); print {*STDLOG} info => "Finished download for dir $dir.\n"; $ftp->quit; } else { print {*STDLOG} warn => "ERROR: FTP for host $ref_params->{site}\n" } return ; } sub GetFiles { return; }