You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
cdr-exporter/NGCP/CDR/Transfer.pm

45 lines
1.1 KiB

package NGCP::CDR::Transfer;
use File::Basename;
use File::Temp;
use Net::SFTP::Foreign;
use IPC::System::Simple qw/capturex/;
sub sftp_sh {
my ($src, $host, $port, $dir, $user, $key) = @_;
my $fname = basename($src);
print "### transferring $src to $user\@$host:$port at $dir/$fname via sftp-sh\n";
my $fh = File::Temp->new(UNLINK => 1);
print $fh "cd '$dir'\nput '$src' $fname";
my $cmd = "/usr/bin/sftp -b ".$fh->filename." -P $port -i $key $user\@$host";
print "### using command $cmd\n";
capturex([0], split(" ", $cmd));
}
sub sftp {
my ($src, $host, $port, $dir, $user, $pass) = @_;
my $sftp = Net::SFTP::Foreign->new(
host => $host,
port => $port,
user => $user,
password => $pass,
timeout => 3,
#password_prompt => qr/password:/,
);
if($sftp->error) {
die "+++ failed to transfer $src to $user\@$host:$port/$dir: " . $sftp->error . "\n";
}
my $fname = basename($src);
print "### transferring $src to $user\@$host:$port at $dir/$fname\n";
$sftp->setcwd($dir);
$sftp->put($src, $fname);
}
1;