use Net::SFTP::Foreign; use Cwd; my $LOGS_LOCAL_PATH = "/x02/ABC/abc/"; chomp $LOGS_LOCAL_PATH; my $LOGS_REM_PATH = "/x01/INT/ABC/vim/"; chomp $LOGS_REM_PATH; my $TODAY = `date +%Y%m%d`; chomp $TODAY; my @GETLOOP = @ARGV; unless ($#ARGV >= 0) { print "\nUsage: gtp_logs.pl .....\n\n"; exit; } system("clear"); unless ( -d "$LOGS_LOCAL_PATH"."$TODAY") { print "Directory \"$TODAY\" doesn't exist. So creating the directory..!\n"; print "OK..Done.....!\n\n"; system("mkdir $LOGS_LOCAL_PATH/$TODAY"); } else { print "Directory already exists. Logs will be downloaded to ==> \"$LOGS_LOCAL_PATH$TODAY\".....!\n\n"; } # if_DOWNLOADED($LOGS_LOCAL_PATH,$TODAY,@GETLOOP); chdir("$LOGS_LOCAL_PATH"."$TODAY") || die "cannot cd to ($!)"; foreach my $GETL (@GETLOOP) { my $is_downloaded = if_DOWNLOADED($LOGS_LOCAL_PATH,$TODAY,$GETL); if(!$is_downloaded) { get_LOGS("172.25.70.221","abc","abc1234321","/x01/INT/abc/vim",$GETL); print "File \"$GETL\" downloaded to ==> \"$LOGS_LOCAL_PATH$TODAY\"\n\n"; } else { print "File \"$GETL\" has already been Downloaded to ==> \"$LOGS_LOCAL_PATH$TODAY\"\n\n"; } } sub get_LOGS { my $LOG_HOST = shift; my $REM_USER = shift; my $REM_PASSW = shift; my $REM_PATH = shift; my $REM_FILE = shift; print "Connecting to the sftp share! Please wait....!\n"; my $sftp = Net::SFTP::Foreign->new($LOG_HOST, user => $REM_USER, password => $REM_PASSW); $sftp->setcwd($REM_PATH) or die "unable to change cwd: " . $sftp->error; print "OK. On the share! Downloading the file \"$REM_FILE\"...................!\n\n\n\n"; $sftp->error and die "Problem connecting to the share...!!!! " . $sftp->error; $sftp->get($REM_FILE) or die "File does not seem to be present on the remote share. Please re-request..!!!" . $sftp->error; return $REM_FILE; } sub if_DOWNLOADED { my $DWD_FILE_PATH = shift; my $DWD_DIR = shift; my $DWD_FILE = shift; if (-e "$DWD_FILE_PATH/$DWD_DIR/$DWD_FILE") { return 1; } else { return 0; }