#!/usr/bin/perl -w use strict; use warnings; use Net::SFTP::Foreign; use POSIX qw(strftime); use diagnostics; use Net::SFTP::Foreign::Constants qw(:error :status); my $datestring =strftime "%d-%m-%Y", localtime; my $host="sftp.brusselsairlines.com"; my $username="dlex"; my $local="/mnt/datalex"; my $file="BookingReport_Daily_$datestring.xls"; #nagios integration. my $sftp = Net::SFTP::Foreign->new($host, user=> $username, stderr_discard => 1 ); $sftp->die_on_error("unable to establish SFTP Connection"); my $ok = 0; my $failed = 0; if ( -e "$local/$file"){ print "BH-ZONE-BATCHSRV-1\tfoster_report_transfer\t0\tFile \"$file\" has already been Downloaded to ==> \"$local\"\n"; } else { unless ($sftp->get("$file", "$local/$file")) { if (($sftp->error == SFTP_ERR_REMOTE_STAT_FAILED or $sftp->error == SFTP_ERR_REMOTE_OPEN_FAILED) and $sftp->status == SSH2_FX_NO_SUCH_FILE) { print "Remote file does not exist!"; } else { print "Transfer Failed"; } die $sftp->error; } print "File \"$file\" downloaded to ==> \"$local\"\n"; $sftp->remove($file); $ok++; } #print "$ok files have been downloaded, $failed files failed!\n\n"; $sftp->disconnect();