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

47 lines
1.2 KiB

package NGCP::CDR::Transfer;
use strict;
use warnings;
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);
NGCP::CDR::Exporter::DEBUG("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";
NGCP::CDR::Exporter::DEBUG("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);
NGCP::CDR::Exporter::DEBUG("transferring $src to $user\@$host:$port at $dir/$fname\n");
$sftp->setcwd($dir);
$sftp->put($src, $fname);
}
1;