#!/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; }