Я вручную добавил Net::SFTP::Foreign
файлы модулей (поскольку у меня нет доступа для установки модулей perl) в мой текущий рабочий каталог. Мой сценарий передачи SFTP показан ниже:
#!/usr/bin/perl -I/home/vinod/scripts/sftp_test/lib
use strict;
use warnings;
use Net::SFTP::Foreign;
print "Starting the script execution\n";
my ($hostip, $username, $password) = ("xx.xxx.xxx.xxx", "user", "password");
my $rdir = "/home/shared_dir/Vinod";
my $fullfilename = "/home/vinod/scripts/sftp_test/abc.txt";
my $sftp = Net::SFTP::Foreign->new(host=>$hostip , user=>$username , password=>$password, more=>[qw(-v -o PreferredAuthentications=password)]) or die "Cannot open remote file list connection: $!";
$sftp->setcwd($rdir) or die "unable to change cwd: " . $sftp->error;
$sftp->put("$fullfilename", "$rdir/xyz.txt") or die "put failed: " . $sftp->error;
$sftp->disconnect;
print "Done\n";
Но этот сценарий выдает мне ошибку:
Starting the script execution
password authentication not available, IO::Pty is not installed or failed to load: Can't locate IO/Pty.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 . /home/vinod/scripts/sftp_test/lib) at /home/vinod/scripts/sftp_test/lib/Net/SFTP/Foreign/Backend/Unix.pm line 256.
at test.pl line 17
Является ли эта ошибка из-за того, что модуль IO::Pty
не установлен.
Когда я вручную передаю файлы с помощью команды sftp
, это работает, а через сценарий - нет.